Effective STL
文章平均质量分 75
Mirants
这个作者很懒,什么都没留下…
展开
-
Effective STL 第12条:切勿对STL容器的线程安全性有不切实际的依赖
在多线程中,对一个STL实现,我们最多只能期望: 1、多个线程读是安全的。多个线程可以同时读同一个容器的内容,并且保证是正确的。自然的,在读的过程中,不能对容器有任何写入操作。 2、多个线程对不同的容器做写入操作是安全的。多个线程可以同时对不同的容器做写入操作。 在一般情况下,我们可以有下面的解决方法: 1、自己手工做同步控制。 vector v; ... getMu原创 2014-12-21 13:49:58 · 718 阅读 · 0 评论 -
Effective STL 第1条:慎重选择容器类型
C++提供了几种不同的容器供我们选择,这里简单回顾一下: 1、标准STL序列容器:vector、string、deque和list。 2、标准STL关联容器:set、multiset、map、和multimap。 3、非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。 4、非标准关联容器hash_set、hash_multiset、has原创 2014-12-21 19:38:09 · 982 阅读 · 0 评论 -
Effective STL 第2、3、4条
第2条:不要试图编写独立于容器类型的代码 第3条:确保容器中的对象副本正确而高效 容器中保存了对象,但并不是你提供给容器的那些对象。而当从容器中取出个对象时,你所取出的也并不是容器中所保存的那份。当向容器中加入对象时(通过insert或push_back之类的操作),存入容器的是你所指定的对象的副本。当(通过如front或back之类的操作)从容器中取出一个对象时,你所得到的是容原创 2014-12-21 20:06:52 · 647 阅读 · 0 评论 -
Effective STL 第5条:区间成员函数优先于与之对应的单元素成员函数
使用区间成员函数而不是其相应的单元素成员函数的原因: l 通过使用区间成员函数,通常可以少写一些代码。 l 使用区间成员函数通常会得到意图清晰和更加直接的代码。 l 在一般情况下,效率更高。 区间操作有以下几种: 区间创建。所有的标准容器都提供了如下形式的构造函数: container::container (InputIteratorbegin, InputIter原创 2014-12-21 21:13:19 · 766 阅读 · 0 评论 -
Effective STL 第7条:如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉
STL中的容器相当“聪明”,它们提供了迭代器,以便进行向后和向前的遍历(通过begin、end、rbegin等);它们告诉你所包含的元素类型(通过它们的value_type类型定义);在插入和删除的过程中,它们自己进行必要的内存管理;它们报告自己有多少对象,最多能容纳多少对象(分别通过size和max_size);当然,当它们自身被析构时,它们自动析构所包含的每个对象。 有了这么“原创 2014-12-21 22:31:47 · 1454 阅读 · 0 评论