我有一个chars vector ,其中包含一些数据元素。

std::vector<unsigned char> data_1;

我有一个未签名的char *,它指向另一组数据元素。
unsigned char * data_2;

问题:
有没有一种方法可以将data_2合并为vector的data_1而完全不复制数据元素?

我读到有关this discussion中引用的移动语义的信息,但我不确定在这种情况下是否可以在此处使用。

最佳答案



否。将元素插入 vector 的所有方式都需要至少复制(或移动)每个元素一次。



移动字符与复制字符相同。该区别仅与具有非平凡的move构造函数或move赋值运算符的类类型相关。



即使没有复制,也无法追加(或移动)。

旁注1:您可以使用 vector 的移动分配运算符将一个 vector 的全部内容替换为另一 vector 的内容,而无需复制(或移动)任何元素。

旁注2:您可以合并两个基于节点的容器实例,例如std::liststd::setstd::map以及它们的无序对应对象,而无需复制(或移动)任何元素。

关于c++ - 如何将char数据附加到std::vector而不引起复制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56734595/

10-10 21:23
查看更多