我认为这是一个关于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;
答案 0 :(得分:8)
使用带迭代器的构造函数:
std::vector<unit8_t> output(buffer, buffer + size);
答案 1 :(得分:3)
您可以一步阅读(您拥有vector
):
std::vector<uint8_t> output(size);
stream->readBuffer(&output[0], output.size());