《Effective STL》
记录本书的50个条款的自我理解
Jiu_R
coder
展开
-
函数子,函数子类,函数及其它:38~42
第41条:理解ptr_fun, mem_fun, mem_fun_ref的来由 对x调用函数f的三种情况: f是x的类型的非成员函数:① f(x); f是x类型的成员函数:②x.f(); ③p是指向x的指针,则p->f(); STL的算法,函数或者函数对象在被调用时,只支持非成员函数的语法形式 //下面为for_each的函数模板,可知for_each只支持f(x)形式的调用 template<typename InputIterator, typename function> fu原创 2020-11-14 16:53:49 · 303 阅读 · 0 评论 -
算法:30~37
第32条:如果确实需要删除元素,则需要在remove这一类算法之后再调用容器的erase成员函数 STL中实现删除操作的算法:remove,remove_if,unique STL的算法无法真正删除元素,所作的只是调整元素的位置 remove的实例: vector<int> v{1,2,3,4,5,6,7,8,9,10}; v[3] = v[5] = v[9] = 99; vector<int>::iterator it = remove(v.begin(), v原创 2020-11-18 16:35:34 · 201 阅读 · 0 评论 -
vector和string:13~18
vector和string优先于动态分配的数组 用vector和string来替代new T[ ]; //T是char则使用string,其它都用vector; vector和string会自己管理内存(在需要时会分配更大的内存,在vector和string容器被析构时,会自动析构所包含的元素并释放它们的内存);并适用于所有支持顺序容器的STL算法,并且提供了很多成员函数; string的实现采用了引用计数技术,可以消除不必要的内存分配和字符拷贝;但若在多线程环境下,引用计数会导致线程不安全; 解决:用v原创 2020-11-12 15:15:56 · 285 阅读 · 2 评论 -
容器:1~12
第1条:慎重选择容器类型原创 2020-11-12 15:15:47 · 129 阅读 · 0 评论