STL之“不要”
来源:互联网 发布:网络代理服务器 编辑:程序博客网 时间:2024/05/08 10:40
依然是《effective STL》的浓缩,记录一下使用STL时很容易就会犯的错误。
一、不要将括号带入函数的参数
int g(double pf()); 等价于int g(double ());
因此
ifstream dataFile("ints.dat");list<int> data(istream_iterator<int>(dataFile), istream_iterator<int>());
应该换成
ifstream dataFile("ints.dat");istream_iterator<int> dataBegin(dataFile);istream_iterator<int> dataEnd;list<int> data(dataBegin, dataEnd);
二、永不建立auto_ptr的容器
拷贝一个auto_ptr将改变它的值。因此,在任何情况下都别简历auto_ptr的容器。C++11标准中auto_ptr已经取消,不过这个建议还是得记着。
三、避免使用vector<bool>
vector<bool>是一个伪容器,只是将bool打包,并不真正地容纳bool变量。如果要记录bool变量,我们可以用deque<bool>或者bitset。
四、不要将相等和等价混淆
相等的定义基于‘==’操作符,而等价的判断是基于关联容器的排序。等价很多时候可以利用,比如创建一个不区分大小写的set。
- STL之“不要”
- 【STL】STL之map
- 【STL】STL之set
- 【STL】STL之pair
- 不要使用VC6自带的STL
- STL 5: STL之迭代器
- 【STL】STL容器之vector
- 【STL】STL容器之map
- 【STL】STL之string类
- Effective STL 条款8:不要把auto_ptrs放入容器
- Effective STL - 不要把auto_ptr放在容器里
- 不要在公共接口中传递STL容器
- 为什么不要在STL容器中存储 auto_ptr 对象
- 不要让内存分配导致传统的STL程序崩溃
- 不要让内存分配导致传统的STL程序崩溃
- STL中的容器map:不要用指针做键值
- 不要在公共接口中传递STL容器
- Binary String Matching STL秒解-不要太简单
- VS2010与水晶报表V13的打包集成小结
- Oracle笔记(六)多表查询
- 黑马程序员之C#学习笔记: 判断该月份有几天
- 变量调节器(续)和smarty缓存简单开始
- org.hibernate.HibernateException: Errors in named queries解决
- STL之“不要”
- c++笔记
- js中prototype的继承和扩展
- mvc
- LeetCode Add Binary
- Javascript 读写文件示例:
- 浅显易懂二分图-最大匹配,最小路径覆盖,最小点覆盖
- 页面静态化学习总结
- 触发器和游标