更换一堆std ::矢量条目
Replace a bunch of std::vector entries
我有一个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 ,这是一个被忽略的优势。
相关文章:
- 如何使用结构和指针推动和弹出一堆双打
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- std::initializer_list 堆是否分配内存?
- 当我在结构中包含多个数组时,我的程序会跳过一堆代码
- 在共享指针的值中调用 std::swap 调用一堆构造函数和析构函数
- 使用带有.lib和一堆.dll和.h文件的Python CFFI
- 用 c++ 编写一堆类似的 if 语句的漂亮方法
- 当我尝试编译程序时,我遇到了一堆错误,例如:'std::max':找不到匹配的重载函数
- Swig C++ to python:编译一堆.cpp和.h文件
- template元编程:将一堆模板参数相乘
- 在.NET中存储一堆恒定值的最佳方法
- 我的一堆函数出现"undefined reference"错误,我不知道为什么
- 制作一堆 int 数组
- 为什么glut.h会在CodeBlocks中弹出一堆未定义的引用
- 更换一堆std ::矢量条目
- 在Windows下编译程序会给出一堆"error: template with C linkage"报告
- C++将字符从静态数组复制到动态数组会添加一堆随机元素
- 如何创建一堆多维数组
- 如何在Linux中使用Makefile一次编译一堆测试C++文件
- 在线评委:创建了一堆std::堆栈