摘要: 有以下多种容器:1、数组(array)2、动态数组(dynamic array)3、链表(linked list)4、栈(stack)5、队列(queue)6、双向队列(deque)7、优先级队列(priority queue)8、树(tree)9、二叉查找树(binary search tree)10、二叉堆(binary heap)11、字典(dictionary)12、集合(set)13、图(graph)14、有向无环图(directed acyclic graph)容器操作:1、插入(insert)2、移除(remove)3、顺序遍历(sequential access)4、随机遍历( 阅读全文
posted @ 2012-02-28 23:34 Cavia 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 动态内存分配速度很慢。影响因素有二:1、堆分配需要处理任何大小的分配,所以管理支出较大;2、大多数OS中调用malloc()和free()必须首先从用户模式切换到内核模式,处理完后再切换回来。所以需要自己定制的内存分配器!一、Stack-Based Allocators1、分配大段连续的内存块(malloc() or new or array)2、维护一个指向栈顶的指针。初始化指针指向内存最低地址处。运行过程中,内存地址低于栈顶的都是正在使用的内存块,内存地址高于栈顶的都是未被使用的内存块。3、每次分配只需要将指针往内存高地址处移动;每次施放内存只需要将指针往内存低地址处移动。4、需要一个标记 阅读全文
posted @ 2012-02-28 19:28 Cavia 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 错误的方式一wrong solution1 1 class RenderManager 2 { 3 public: 4 RenderManager() 5 { 6 //start up the manager... 7 } 8 ~RenderManager() 9 {10 //shut down the manager... 11 }12 //...13 };14 15 //singleton instance16 static RenderManager gRenderManage... 阅读全文
posted @ 2012-02-28 09:09 Cavia 阅读(430) 评论(0) 推荐(0) 编辑