effective STL
zldeng_scir
菜鸟!
展开
-
Item 3. Make copying cheap and correct for objects in containers.
在STL中,对容器的复制和从容器中取得对象都是通过调用类的构造函数来完成的,这样就会造成一些效率上的不必要损失。例如当需要大量的进行赋值和取内容的时候,将会频繁的调用赋值构造函数进行新对象的构造,这样将会造成大量时间的消耗。 一种改进方法就是在容器中不要存储对象本身,而是存储对象的地址(指针),这样对于赋值和取内容都只是将指针进行相应的复制即可。保证了在确定的时间复杂度内完成原创 2011-12-23 10:38:57 · 492 阅读 · 0 评论 -
STL容器分类
容器(container)是装有其他对象的对象。容器里面的对象必须是同一类型,该类型必须是可拷贝构造和可赋值的,包括内置的基本数据类型和带有公用拷贝构造函数和赋值操作符的类。典型的容器有队列、链表和向量等。 在标准C++中,容器一般用模版类来表示。不过STL不是面向对象的技术,不强调类的层次结构,而是以效率和实用作为追求的目标。所以在STL并没有一个通用的容器类,各种具体的容器也没有统一的基类。转载 2011-12-23 09:39:00 · 1937 阅读 · 0 评论 -
Item 5. Prefer range member functions to their single-element counterparts.
在effective STL中,作者建议我们尽量使用区间成员函数代替他的单元素的兄弟函数。使用区间成员函数主要有以下几方面的优点: (1)使用区间成员函数能够使你的代码所要表达的意思更清晰,而是用单元素函数将必须引入循环,可能对于程序的维护会造成更多的困难。 (2)使用区间成员函数将可以大量减少数据的移动次数。例如如果在vector前面查出元素,那么使用单元素函数每插入一个原创 2011-12-23 15:37:41 · 708 阅读 · 0 评论 -
Effective STL 条款21: 关联容器的strict weak order(让比较函数对相等的值返回false)
条款21: 永远让比较函数对相等的值返回false 让我向你展示一些比较酷的东西。建立一个set,比较类型用less_equal,然后插入一个10: set > s; // s以“<=”排序 s.insert(10); // 插入10 现在尝试再插入一次10: s.insert(10); 对于这个insert的调用,set必须先要判断出10是否已经位于其中了。 我们知道转载 2012-01-04 10:23:22 · 503 阅读 · 0 评论