effective stl 回顾
风尧
学习ing
展开
-
effective stl(四)
条款三十二 若要删除元素,在remove一类算法后使用erase 删除元素 remove并不能做到真的移除元素,只是把需要remove的元素使用之后应当留下的元素进行填充,然后返回一个迭代器指向第一个应当被移除的元素的位置或end() remove_if和unique同理 故使用erase(remove(begin(),end(),val), end()); ...原创 2019-01-10 22:33:07 · 138 阅读 · 0 评论 -
effective stl(二)
条款十三 vector与string优于动态分配数组 不必使用delete也不必担心delete两次相同的指针 条款十四 使用reserve来避免不必要的内存重分配 vector与string的内存扩张 1、分配两倍的空间 2、拷贝(可以的话会移动)原来的元素到新的空间 3、释放原来的空间(拷贝的话需要先析构原来的元素) 相关函数 size()个数...原创 2019-01-05 21:53:58 · 100 阅读 · 0 评论 -
effective stl(一)
条款一 谨慎选择你的容器 简单地说: array 不可变序列数组 vector 可变序列数组 string 字符串 list 含头结点的双向链表 deque 可双头访问的逻辑上线性的序列 forward_list 单向链表 条款二 不要尝试编写容器类型无关的代码 原因是没有真的统一的接口,每个容器的实现基本没有什么相似之处,统一拥有的接口少之又少,与其...原创 2019-01-01 20:14:22 · 154 阅读 · 0 评论 -
effective stl (四)
条款四十一 ptr_fun, mem_fun, mem_fun_ref的来由 均用以配接对象容器,指针容器与一般函数。 ptr_fun配接普通函数与一般容器,即直接使用函数指针调用函数。 mem_fun配接存储对象指针的容器与成员函数,即使用 ->* 方式调用相应成员函数。 mem_fun_ref配接存储对象的容器与成员函数,即使用 .* 方式调用相应的成员函数。 三者返回的都是...原创 2019-01-11 21:44:30 · 142 阅读 · 0 评论 -
effective stl(三)
条款二十二 切勿直接修改set或multimap的键 而map和multimap则永远别修改作为键的对象 set和multiset可使用const_cast结合迭代器来修改不用做排序的键对象的其他属性。 但最好的做法是拷贝一份,对拷贝进行修改,移除旧值,加入改变的值。 条款二十三 考虑用排序的vector代替关联容器 关联容器提供对数级的查找时间,且每个元素带...原创 2019-01-07 23:20:00 · 128 阅读 · 0 评论