删除向量中的第0个元素需要更多时间

Nih*_*har 2 c++ stl vector

我有一个实时问题.我正在使用向量来解决我的问题.问题是我必须遍历列表的90%的时间.5%的时间我必须将push_back数据列入清单.1%的时间我必须删除.但是在该列表中,如果我有超过1GB的数据,那么要删除第0个元素,它需要超过2分钟并且系统挂起.如何避免它,或任何其他标准模板库可以解决我的问题?

Bil*_*nch 9

所以,第一个解决方案是最简单的.使用不同的数据结构.std::deque例如,A .

让我们说由于某种原因,一个std::deque不会起作用.但此外,您可以重新排序元素.如果是这种情况,那么让我们这样做:

void remove(std::vector<T> elems, int index) {
    swap(elems[index], elems.back());
    elems.pop_back();
}
Run Code Online (Sandbox Code Playgroud)

  • 对于不熟悉这种技术的读者:它是"交换和流行"的习语. (2认同)