如何将字符范围从字符数组复制到 vector ?起始索引始终为 0 并转到某个传递值 x。我在堆上有 char* 缓冲区(大小为 32*1024),我正在使用该缓冲区接收消息并在变量 x 中设置接收到的消息大小。如何从第 0 个到第 x 个字符复制到 vector<char> mainBuffer
?
(我可以简单地迭代,但如果消息很长,它看起来效率很低。另一种方法如下所示,但我总是在每次传递中创建新 vector )
char* buffer = new char[32*1024];
int x;
std::vector<std::vector<char> > mainBuffer;
//:loop
// here is some code where I recive message in buffer and set x
mainBuffer.push_back(std::vector<char>(buffer,buffer+x));
//:end loop
有谁知道更高效、更优雅的方法吗?
最佳答案
mainBuffer.push_back(std::vector<char>(buffer,buffer+x));
Does anyone know more efficient and elegant way to do this ?
对于 C++11,做:
mainBuffer.emplace_back( buffer,buffer+x );
这会转发参数并直接在 mainBuffer 中构造对象。
编辑:使用 C++(旧),使用 std::swap:
mainBuffer.push_back( std::vector<char>() );
mainBuffer.back().swap( std::vector<char>(buffer, buffer+x) );
编辑 2:如果可以,在对 mainBuffer 使用 push_back 之前调用 reserve。
关于c++ - 如何将字符范围从字符数组复制到 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13725031/