2.vector和string
来源:互联网 发布:juniper client mac 编辑:程序博客网 时间:2024/06/06 01:15
Item13:
vector和string优先于动态分配的数组
如果在多线程环境下使用了引用计数的string,应当注意因支持线程安全而导致的性能问题。
- 是否能通过改变某个预处理变量的值禁止引用计数
- 开发一个不使用引用计数的string实现
- 使用vector< T >替换
Item14:
使用reserve来避免不必要的重新分配
Item15:
注意string实现的多样性
通常包含size,capacity,value,Allocator,引用计数等。大小范围为char*指针的1~7倍
Item16:
了解如何把vector和string数据传给旧的API
- vector可以通过&v[0]将数组头指针传递过去,但此时不能试图在vector中为使用的空间中创建元素,因为此时vector无法调整size。
- string可以通过s.c_str()
Item17:
使用“swap技巧”除去多余的容量
1.vector< T >(vec).swap(vec);
创建临时vector并与vec交换,由于STL实现不一定将临时数组的 capacity设为vec.size(),可能会预留空间,导致偏大。所以该技巧只是使容器的容量在该实现下变为最小。
2.vector< T >().swap(vec);
清除vec并把它的容量变为最小。
3.C++11中可以调用shrink_to_fit()
Item18:
避免使用vector< bool >
你可以创建一个指向bool的指针,但指向单个位的指针则是不允许的。
而vetor< bool >内部是以二进制位实现的,所以无法对成员进行取址,不符合STL标准。vector< bool >::operator[]返回的是一个代理对象,这只不过是为了描述“通过代理来存取元素的容器”的实验,但貌似搞砸了。
0 0
- 2.vector和string
- string和vector
- string和vector
- string 和 vector 初探
- vector和string
- stl string和vector
- array vector 和string
- string和vector易错点
- vector<char*>和vector<string>的不同
- 第二部分 vector和string
- Effective STL -- vector和string
- Effective STL--2.Vector String
- vector和string的内存管理
- C++Simplify04-标准库string和vector
- STL:使用string、vector、complex和limits
- vector和string最重要的区别
- Effective STL:13 - 18 vector 和 string
- EffectiveSTL笔记二-vector和string
- Ubuntu 安装百度云客户端
- AngularJS Directive 隔离 Scope 数据交互
- PHP开启curl库的解决方法
- Mirantis OpenStack Fuel9.0离线安装(MOS9.0本地源)
- STM32的内存地址映射与IAP下载
- 2.vector和string
- android studio处理网络jason文件
- android面试专题(2)
- JavaScript中的事件
- 关于打印字母
- cocos2dx.3.x之重要类分析(1)——Ref
- Android Touch事件传递机制解析
- hdu 5739 Fantasia
- 宿主机ping不通虚拟机VMWARE中的linux系统