vector::erase的效率如何
我想用vector <char> 代替字符数组.
我的数组可能有100-10万个元素,
经常执行的操作是插一些元素到它的后面,
从头删除一些元素.
我担心的是:vector::erase效率如何?会不会把后面所有的元素向前移?
另外:我这种情况用vector <char> 合适吗?谢谢
[解决办法]
如果仅仅是100万个char应该没有多大的问题,写个简单的程序试验下就可以了,但是注意开发环境,因为有人碰到过类似问题,如果是使用VC6的话,超过了3万多点以后使用其中的sort等函数会导致错误,所以建议使用VS2005等高级版本,VC6过于陈旧了点,不建议使用。
///////////
我担心的是:vector:erase效率如何?会不会把后面所有的元素向前移?
效率没有任何问题的,不要担心
[解决办法]
vector是连续内存容器,标准保证它的内存分配布局与标准C数组一样,你earse了其中一个元素,后面的显然会前移。
看你的需求,不如用deque
[解决办法]
使用deque效率好些吧
[解决办法]
还是看看《Effective STL》item 1吧,容器是要根据场合选取的,不是抓一个来就用的。
[解决办法]
根据你说得情况,deque好像更适合些