更换一堆std ::矢量条目

Replace a bunch of std::vector entries

本文关键字:std 一堆      更新时间:2023-10-16

我有一个std :: vector。我分配了这个向量,例如

vec.assign(20000, 0);

现在,我有一个其他数组,我想将其插入向量。但不仅像插入物一样,更多地替换了向量中的元素。

uint8_t a[] = {1,2,3,4,5,6,7,8};

将数组移动到位置x -x 8的位置,而无需分配新内存。

我尝试和工作的是

vec.insert(start, a, a+8);

但是,我正在分配新的内存和向量变化的大小,这不应该发生。是的,我可以删除,这些条目太多了,但是仍然存在问题,我正在分配更多的内存。是否有可能仅用向量的内容代替数组?这样的smth:

vec.replace(start, a, a+8);

我想避免更换每个元素,因为恐怕这可能会花费太长时间。

您怎么看?有没有办法做到这一点?您以前也遇到过这个问题吗?您是如何修复的?

简单

#include <algorithm>
std::copy(a, a + 8, vec.begin());

a的元素副本填充到 a + 8,并替换为 vec.begin()的元素。

我认为您担心效率是错误的。上面的解决方案确实替代了每个元素,并且可能不会比自己编写替换代码的效率更低。如果上面的代码具有任何优势,则是 CLARITY ,这是一个被忽略的优势。