替换一堆std :: vector条目

时间:2012-10-16 10:15:40

标签: c++ stdvector

我有一个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);

我想避免更换每个元素,因为我担心这可能需要很长时间。

你怎么看? 有没有办法做到这一点? 你以前也遇到过这个问题吗?你是怎么解决的?

1 个答案:

答案 0 :(得分:6)

简单

#include <algorithm>

std::copy(a, a + 8, vec.begin());

将元素从a复制到a + 8,并替换从vec.begin()开始的元素。

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