阅读effective stl 有感(二)
2017-04-22 16:00
274 查看
stl的条款:
1. 容器里容纳的对象是通过拷贝复制构造函数进行复制的结果,考进去,然后拷出来。以基类对象建立一个容器,而试图插入派生类,那么派生类对象通过拷贝构造函数到容器中时候,派生类部分会被删掉,所以需要建立指针容器。
2. 用empty来检查size为0。empty是一个常数时间的操作,但对于一些list实现,size花费线性时间。
3. 尽量使用区间成员函数代替它们的单元素兄弟,尽量不要手写循环! ! ! ! ! ! ! ! ! ! ! 多用assign和insert
4.
声明了一个函数f带有一个double而且返回一个int:int f(double d);
int f(double (d)); // 同上;d左右的括号被忽略
int f(double); // 同上;参数名被省略
int g(double (*pf)()); // g带有一个指向函数的指针作为参数
int g(double pf()); // 同上;pf其实是一个指针
int g(double ()); // 同上;参数名省略
5. 当使用new得指针的容器时,记得在销毁容器前delete那些指针,或者使用智能指针boost::share_ptr
永不建立auto_ptr的容器
6. 对于一个连续内存容器(vector、deque或string),最好的方法是erase-remove惯用法。list直接remove,当是关联容器时候,erase。
1. 容器里容纳的对象是通过拷贝复制构造函数进行复制的结果,考进去,然后拷出来。以基类对象建立一个容器,而试图插入派生类,那么派生类对象通过拷贝构造函数到容器中时候,派生类部分会被删掉,所以需要建立指针容器。
2. 用empty来检查size为0。empty是一个常数时间的操作,但对于一些list实现,size花费线性时间。
3. 尽量使用区间成员函数代替它们的单元素兄弟,尽量不要手写循环! ! ! ! ! ! ! ! ! ! ! 多用assign和insert
4.
声明了一个函数f带有一个double而且返回一个int:int f(double d);
int f(double (d)); // 同上;d左右的括号被忽略
int f(double); // 同上;参数名被省略
int g(double (*pf)()); // g带有一个指向函数的指针作为参数
int g(double pf()); // 同上;pf其实是一个指针
int g(double ()); // 同上;参数名省略
5. 当使用new得指针的容器时,记得在销毁容器前delete那些指针,或者使用智能指针boost::share_ptr
永不建立auto_ptr的容器
6. 对于一个连续内存容器(vector、deque或string),最好的方法是erase-remove惯用法。list直接remove,当是关联容器时候,erase。
相关文章推荐
- Effective STL 阅读有感(1)--typename 依赖类型 end()的使用
- 阅读effective stl 有感(一)
- 阅读我是太阳有感
- 阅读作业二-----读LOST IN CATB有感 BY 李栋
- 阅读《构建之法》6-7章有感
- 第一次作业:阅读优秀博文有感
- 阅读《STL源码分析》有感
- 《软件工艺》阅读有感!
- 阅读《JavaScript语言精髓与编程实践》有感
- 随笔(2)备考GRE有感-阅读篇
- 阅读《构建之法》1-5章有感
- 阅读博文有感
- 阅读nodejs文档有感
- 阅读《首先,打破一切常规》有感
- Asp.net MVC 4 Web编程阅读有感
- 阅读laravel源代码有感
- 阅读天龙八部的代码有感----两种逻辑处理模式的比较
- 软考培训-2014年5月考试试题阅读有感
- 软工作业阅读计算机前辈的随笔有感
- 第一次作业:阅读优秀博文有感