STL
xlf13872135090
这个作者很懒,什么都没留下…
展开
-
Effective STL 第一章 第9条
第9条:慎重选择删除元素的方法先写总结,在写例子:1、要删除容器中有特定值的所有对象:如果容器是vector, string或deque,则使用erase-remove习惯用法如果容器是list,则使用list::remove如果容器是一个标准关联容器,则使用它的erase成员函数2、要删除容器中满足特定判断式(条件)的所有对象:如果容器是vector、string和d原创 2014-01-09 18:58:35 · 754 阅读 · 0 评论 -
Effective stl 第一章 第7、8条
第7条 如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉。如果一个容器包含指针,则析构函数不对指针做任何事情,不会对指针所指的对象做delete操作,所以会引起内存泄露原创 2014-01-09 12:48:21 · 775 阅读 · 0 评论 -
STL容器迭代器失效问题
众所周知当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此很多建议都是让我们获取insert或者erase返回的迭代器,以便用重新获取新的有效的迭代器进行正确的操作:view plaincopy to clipboardprint?iter=vec.insert(iter); iter=vec.erase(iter);转载 2014-01-09 15:06:53 · 627 阅读 · 0 评论 -
Effective stl 第6条
第6条 当心C++编译器最烦人的分析机制当将一个存有整数(int)的文件复制到一个list中时,假设采用:ifstream dataFile("ints.dat");list data(istream_iterator(dataFile), istream_iterator());即将一对istream_iterator传入list的区间构造函数中。 这段代码可能会通过编译,但是原创 2014-01-09 10:43:10 · 881 阅读 · 0 评论 -
Effective stl 第一章 第10条
这隔了一星期没看 看的论文 感觉好久没看书 好久没写代码了 这一不学习就感觉很难进入状态了 我要收心学习了!收心收心这一章 没仔细看 也没看懂。。。先记一点 回来再补第10条 了解分配子(allocator)的约定和限制 最后的总结:1·你的分配子是一个模板,模板参数T代表你为它分配内存的对象的类型。2·提供类型定义pointer和reference,但是始终让pointer为原创 2014-01-21 11:06:51 · 624 阅读 · 0 评论 -
第2章 vector和string 第13条 第14条
第13条:vector与string优先于动态分配的数组vector和string可以自己管理自己的内存,是功能完全的STL容器,所以凡是适用于序列式容器的算法都可以使用,数组也可以用于STL算法,但是数组没有提供像begin,end及size这样的成员函数,也没有像iterator reverse_iterator和value_type这样的嵌套类型定义。string一般都使用了引用计数原创 2014-01-21 14:32:55 · 544 阅读 · 0 评论 -
Effecitve stl 第一章 第12条
第12条:切勿对STL容器的线程安全性有 不切实际的依赖。对一个STL实现最多只能期望:1 多个线程读是安全的。多个线程可以同时读一个容器的内容,而且保证是正确的。自然地,在读的过程中,不能对容器有任何写入操作。2 多个线程对不同的容器做写入操作时安全的。多个线程可以同时对不同的容器做写入操作。这是所能期望的,而不是所能依赖的,有些实现提供了这些保证,有些则没有。现在考原创 2014-01-21 12:18:27 · 576 阅读 · 0 评论 -
effective stl 第15条
第15条 注意string实现的多样性实现string的方式很多。几乎每个string实现都包含如下信息:1)字符串的大小(size),即它所包含的字符的个数。2)用于存储该字符串中字符的内存的容量(capacity)。3)字符串的值(value),即构成该字符串的字符。除此之外,一个string还可能包含:4)它的分配子的一份拷贝。这个字段是可选的。建立在引用计数原创 2014-01-22 16:11:40 · 554 阅读 · 0 评论 -
STL之迭代器
迭代器分了五种类型,总共有五种迭代器相应型别以下为源码://摘自SGI_STL //五种迭代器类型struct input_iterator_tag();struct output_iterator_tag();struct forward_iterator_tag : public input_iterator_tag {};struct bidirectional_itera原创 2014-02-20 20:58:49 · 551 阅读 · 0 评论