gpt4 book ai didi

c++ - 替换一堆 std::vector 条目

转载 作者:行者123 更新时间:2023-11-30 00:55:07 26 4
gpt4 key购买 nike

我有一个 std::vector。我像这样分配这个 vector

vec.assign(20000, 0);

现在我有一个额外的数组,我想将其插入 vector 中。但不仅仅是插入,更多的是替换 vector 中的元素。

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

在不分配新内存的情况下将该数组移动到位置 x - x+8 的 vector 中。

我尝试过的当然是成功的

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

但是我分配了新的内存并且 vector 的大小发生了变化,这是不应该发生的。是的,我可以删除太多的条目,但问题仍然存在,我正在分配更多内存。有没有可能只用 vector 的内容替换数组?像那样:

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

我想避免替换每个元素,因为我担心这会花费太长时间。

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

最佳答案

简单

#include <algorithm>

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

复制从 aa + 8 的元素并替换从 vec.begin() 开始的元素。

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

关于c++ - 替换一堆 std::vector 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912387/

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