注意点:
1。使用迭代器时候宁肯用++pos而不要使用pos++,后者会产生一个临时的对象,这个是出于效率上的考虑。
2。尽量不用auto_ptr,安全性提高了意味这灵活性的降低。
3。尽量用算法代替循环,必要的时候尽量用自定义的谓词和函数对象,重载操作符()是非常关键的。
4。对六种排序算法了然于胸。sort,partion,nth_element.....
5。牢记vector,list,deque区别,选用最适当的
6。Set是自动排序的
7.关于二元谓词的算法:
copy(a.begin(),a.end(),b.begin())
要求:b的长度至少等于a.,拷贝是从a表的第一个元素开始,直到a的第一个元素结束。
顺次把元素向b中输入。
同样道理
equal(a.begin(),a.end(),b.being())
这个算法的含义也是从a表中逐个把元素与b表中的元素比较,如果a表遍历完了,相等则返回TRUE,
这个算法其实是寻找子串的算法。
8。为了避免错误,STL中为我们提供了一些adapter,这样可以直接利用这些adapter,自动分配需要的空间。
通常 STL为我们提供了三类iterator adapter, back_insertor(表) back_insertor(表) 和 insertor(表)
9。Stream iterator adapter. 语法令人发狂中。
10 Thus, remove() did not change the number of elements in the collection for which it was called.
所以调用remove时候,千万要注意,元素个数不少的情况下,被移走元素的值是什么?
11。distance(iteraotrb,iteraotre);
可以返回两个指针的距离。
12.宁肯使用成员算法,尽量不使用通用算法,因为通用性通常意味着效率上的损失。