条款11:理解自定义分配器的正确用法
条款
条款12:对STL容器线程安全性的期待现实一些
你能从实现里确定的:
多个读取者是安全的。
多个容器多个写入者是安全的。
线程安全需要手工处理,简单的方法是使用Lock对象
条款13:尽量使用vector和string来代替动态分配的数组
避免string引用计数导致多线程环境性能问题:关闭引用计数;vector<char>代替;自己开发string
条款14:使用reserve来避免不必要的重新分配
reserve来从一个string中修整多余容量一般不如使用“交换技巧
条款
条款15:小心string实现的多样性
条款16:vector,string与API
vector v容器作为char* 参数:用&v[0]而不是v.begin(),要么用&*v.begin(),并且先检查empty();begin()返回iterator不是指针
string v 作char* 参数,v.c_str();不用检查empty();
size_t fillArray(double *pArray, size_t arraySize);
vector<double> vd(maxNumDoubles);// 建立一个vector,大小是maxNumDoubles
vd.resize(fillArray(&vd[0], vd.size())); {zh1}一个0呢
条款17:使用“交换技巧”来修整过剩容量
vector<T>(c).swap(c);
条款18:避免使用vector<bool>
它不是一个容器(伪容器),存放的不是bool.
deque内部内存不是连续的
代替vector<bool>: deque<bool>容器 bitset(没有迭代器,不能改变大小)
条款19:了解相等和等价的区别
== !a<b&&!b<a 模板函数与关联容器成员函数
条款20:为指针的关联容器指定比较类型,编写foreach处理函数
直接比较指针地址,处理指针没有意义,