如何从缓冲区及其大小填充std::向量

How can I populate a std::vector from a buffer and its size?

本文关键字:填充 std 向量 缓冲区      更新时间:2023-10-16

我有一个关于std::vector类型的简单问题。潜在的问题很简单:我有一个函数,它将数据流读取到缓冲区(以及获取缓冲区的大小),然后将该数据作为向量返回。集合元素的类型是固定的,uint8_t。我的问题是,有没有比遍历缓冲区更好的方法来填充向量?

这是我天真、愚蠢的代码:

uint8_t* buffer;
size_t size;
stream->readBuffer(buffer, size); // I don't own the stream class
std::vector<uint8_t> output(size);
for (size_t i = 0; i < currentChunkLength; i++)
{
    output.push_back(buffer[i]);
}
return output;

使用构造函数获取迭代器:

std::vector<unit8_t> output(buffer, buffer + size);

您可以一步读取(您拥有vector):

std::vector<uint8_t> output(size);
stream->readBuffer(output.data(), output.size());