我有实时问题。我使用vector来解决我的问题。问题是我必须遍历列表的90%的时间。 5%的时间我需要push_back
数据到列表中。 1%的时间我必须删除。但是在该列表中,如果我有超过1GB的数据,那么要删除第0个元素,它需要超过2分钟并且系统挂起。如何避免它,或任何其他标准模板库可以解决我的问题?
答案 0 :(得分:9)
所以,第一个解决方案是最简单的。使用不同的数据结构。例如std::deque
。
我们可以说,出于某种原因,std::deque
无效。但此外,您可以重新排序元素。如果是这种情况,那就让我们这样做:
void remove(std::vector<T> elems, int index) {
swap(elems[index], elems.back());
elems.pop_back();
}
答案 1 :(得分:3)
以下是一些可能的解决方案:
deque
vector
的指针copy
然后resize
#3的例子,说我需要删除3个元素:
replace(foo.begin(), advance(foo.begin(), 3), advance(foo.end(), -3), foo.end());
foo.resize(foo.size() - 3);