gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:22:40 25 4
gpt4 key购买 nike

我正在尝试在以下 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com