1

我有一个关于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;
4

2 回答 2

15

使用带有迭代器的构造函数:

std::vector<unit8_t> output(buffer, buffer + size);
于 2013-08-29T20:00:59.940 回答
6

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

std::vector<uint8_t> output(size);
stream->readBuffer(output.data(), output.size());
于 2013-08-29T20:01:07.513 回答