我有一个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);
我想避免更换每个元素,因为我担心这可能需要很长时间。
你怎么看? 有没有办法做到这一点? 你以前也遇到过这个问题吗?你是怎么解决的?答案 0 :(得分:6)
简单
#include <algorithm>
std::copy(a, a + 8, vec.begin());
将元素从a
复制到a + 8
,并替换从vec.begin()
开始的元素。
我认为你担心效率是错误的。上面的解决方案确实取代了每个元素,并且可能不会比您自己编写替换代码更有效率。如果上面的代码有任何优势,那就是清晰度,这是一个被忽视的优势。