c++ - 有没有更快的方法可以在std::vector中插入元素

标签 c++ performance vector insert

我正在尝试在以下 vector 中插入字符串:std::vector<std::string> fileVec

在我调用这些行之前,fileVec中已经包含许多元素(最多一百万个字符串):

int index = 5;

//there is some code here to find the index i want insert the text (let's take for example has value 5)

fileVec.insert(fileVec.begin() + index, "add this text");

我的问题是插入文本需要花费很多时间(特别是如果index很小的话)。

有没有更快的方法来在大 vector 中添加元素(而不删除其他元素)?
fileVec.insert不会被调用很多次,大约15次。

最佳答案

std::vector并非为频繁在中间添加元素而设计的,尤其是如果它很大(一百万个元素非常大)。请考虑使用std::list-一个双链表,其中在中间添加元素的速度非常快,因为您要做的只是要做的就是改变一些指针。在std::vector中,所有元素都必须移动,这当然会导致大量开销。

但是同时,访问std::list中的单个元素很慢,因为您需要遍历整个列表,直到找到所需的元素为止。

因此,选择您的毒药,但我强烈建议在这种情况下使用std::list

关于c++ - 有没有更快的方法可以在std::vector中插入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418733/

相关文章:

python - 使用 NumPy 计算向量中的值

c++ - 在boost中为动态数组定义自定义步进器

c++ - 为什么要在 PE 文件中创建不同的代码/数据/bss 部分?

c++ - 在 header 中声明对象

c++ - dll相关的问题

postgresql - EXPLAIN ANALYZE QUERY 如何用于测量查询性能?

javascript - VueJs 在一次更改后呈现所有元素

c++ - 生成MITK教程错误

MYSQL 按性能分组

r - 将 c ('a' 'c' , 'b' ) 转换为 c ('a' , 'a' , 'c' , 'c' , 'b' , 0x1045)67910