可以用boost::pool当做,std::list的分配器模板参数来试试
vector会比list更快,这个很不解啊,vector是数组类型的,删除了会进行拷贝移位什么的,list是链表试的,只用改指针,被删除的元素,两个容器都要调他的析构函数,应该是一样的,你确定是由于容器不一样产生的性能差别?
[quote=引用 楼主 paschen 的回复:] 我知道效率偏低的原因再于反复delete很多元素,如果用vector就会快很多 可是由于需要迭代器不失效以及频繁插入数据,所以不想换成其他容器
我试过在析构时创建多个线程,每个线程分别执行一个list对象的clear操作,可速度并没有改善,不知是否是由于STL对多线程加了锁
lz应该用池技术了 建一个对象池,预分配比如10000个 CString *pCStringArr = new CString[10000]; 建两个列表,分别保存使用中的对象下标,和未使用的对象下标 std::list<int> usedList; std::list<int> freeList;
[quote=引用 9 楼 paschen 的回复:] [quote=引用 1 楼 ri_aje 的回复:] [quote=引用 楼主 paschen 的回复:] 我知道效率偏低的原因再于反复delete很多元素,如果用vector就会快很多 可是由于需要迭代器不失效以及频繁插入数据,所以不想换成其他容器
我知道效率偏低的原因再于反复delete很多元素,如果用vector就会快很多 可是由于需要迭代器不失效以及频繁插入数据,所以不想换成其他容器
[quote=引用 1 楼 ri_aje 的回复:] [quote=引用 楼主 paschen 的回复:] 我知道效率偏低的原因再于反复delete很多元素,如果用vector就会快很多 可是由于需要迭代器不失效以及频繁插入数据,所以不想换成其他容器
64,651
社区成员
250,508
社区内容
加载中
试试用AI创作助手写篇文章吧