gpt4 book ai didi

c++ - 从 char* 高效地实例化 vector

转载 作者:太空宇宙 更新时间:2023-11-03 10:27:07 25 4
gpt4 key购买 nike

我的代码中有一个热点,我需要调用一个接受 vector<char> vec 的库函数我的数据是 char* data连同 size_t len长度。我目前做的:

vec.reserve(len);
std::copy(data, data+len, back_inserter(vec));

就像我说的,这是一个热点。我想知道一次复制一个字节是否太慢,每次迭代复制 4 或 8 个字节会更快。我也不知道有一种方法可以用这种方式填充 vector (因为它需要写入其 data() 成员)。

是否有办法完全避免复制?

最佳答案

你可以这样做

vec.assign(data, data + len);

或者如果它是一个新变量,使用适当的构造函数:

std::vector<char> vec(data, data + len);

应该比push_back()效率高一点一个一个地(尽管对其进行概要分析),但无论如何它都是一个拷贝。

除非使用 vector<char>,否则无法避免复制从头开始获取您的数据,或更改库代码。

至少,你可以重用vec在对库的调用之间(通过调用 assign ),因此您可以节省一些内存分配时间。

关于c++ - 从 char* 高效地实例化 vector<char>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29961282/

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