用vector保存对象时保存指针的优点, 以及reserve的使用
来源:互联网 发布:数据对比分析模版 编辑:程序博客网 时间:2024/06/08 06:31
这一篇博客转载于 http://blog.csdn.net/q191201771/article/details/6120315
前一段时间我的DX11博客系列虽然用了类的封装,但感觉代码有些偏向于C风格,我后面打算将源代码的所有数组指针用STL的容器vector代替,但是随之而来的一个问题是,vector保存对象是应该用指针还是用对象呢?下面我转载的这篇博客很明了的解决了这个问题,指针的拷贝比对象的拷贝消耗低的多,而且不会调用析构函数,当然最后回收内存时得遍历容器手动delete回收内存。
代码1
执行结果1
代码2
结果2
把代码2注释掉的vec.reserve(3)打开, 结果3
说明在使用vector时, 插入的是要插入的对象的拷贝, 如果vector中的类对象比较大时, 会影响性能, 还有使用拷贝构造时的一些深浅拷贝的问题, 另外通过结果2与结果3的比较我们可以知道当vector开始申请的空间不够使用时, 它会再次申请空间并可能放弃原来申请的空间, 这样调用的拷贝构造次数就更多了, 所以我们在使用vector前应该通过它的成员函数reserve事先申请一个我们估计的值, 你可以放心, 当reserve的空间不够大时, vector仍然会自动申请空间
下面是使用vector中存放类指针的做法, 一定要注意插入vector中对象指针指向内容的生存周期问题, 另外如果是new出来的, 如果其他地方没有delete应该在适当的时候通过遍历vector查找出来进行delete
结果
0 0
- 用vector保存对象时保存指针的优点, 以及reserve的使用
- 用vector保存对象时保存指针的优点, 以及reserve的使用
- 用vector保存对象时保存指针的优点, 以及reserve的使用
- MAP在保存对象时候的优点
- MAP在保存对象时候的优点
- 声明vector对象保存函数指针
- 声明vector对象保存函数指针
- 保存指针而不是对象的STL容器
- Python列表List保存对象的指针
- Vector的使用:resize、size、reserve、capacity
- vector的reserve和resize以及capacity和size
- 密码保存在Keychan比NSUserDefaults里的优点 (Touch ID以及1Password)
- 使用 vector保存mat
- C++中Vector保存 原始指针和智能指针的析构问题
- vector的reserve和resize
- vector的reserve和resize
- vector的reserve和resize
- vector的reserve和resize
- [leetcode javascript解题]Search for a range
- java实现文件夹的拷贝
- linux下配置hadoop
- HDU 1166 数据结构-<线段树>
- 方法重写
- 用vector保存对象时保存指针的优点, 以及reserve的使用
- 最长不下降子序列
- memcached 在maven项目中使用
- JVM调优总结(1):一些概念
- 【深入Java泛型】(3)java泛型-桥接方法
- 2 线程安全性
- 【深入Java泛型】(4)Java泛型-协变、逆变
- MYSQL修改datadir后报3534
- poj2686(TSP)