关于std::vector效率的一个思路 (C++)

45 views
Skip to first unread message

doud...@gmail.com

unread,
Apr 4, 2006, 11:00:41 PM4/4/06
to doudehou
vector本质上是一个数组,所以删除非末端成员的效率很低,因为它需要把被删除成员后面所有的成员都往前面挪一格。这样做是为了保持vector内部成员的顺序不变。

但是仍然存在这样一种可能,就是我的vector就是用来保存一些数据,顺序对我来说是没有意义的。换句话说,我在为我不需要的东西买单。这并不符合c++的理念。

那么为什么不提供一个成员方法fast_erase(),它——
--> 把要删除的成员和最后一个交换
--> 删除最后一个成员

我测试了一下,对于100*100*10个int,

for(...)
vector<int>.erase(begin());


for(...)
my_vector<int>.fast_erase(begin());

之间,所需要的时间,相差了好几个数量级。
所以我认为这样做是值得的。

Reply all
Reply to author
Forward
0 new messages