【发布时间】:2012-12-05 14:06:52
【问题描述】:
如何将字符范围从字符数组复制到向量?起始索引始终为 0,并转到某个传递的值 x。我在堆上有 char* 缓冲区(大小为 32*1024),我正在使用该缓冲区接收消息并在变量 x 中设置接收到的消息大小。如何从第 0 个字符复制到第 x 个字符到 vector<char> mainBuffer ?
(我可以简单地进行迭代,但如果消息很长,它看起来效率低下。另一种方法如下所示,但我总是在每次传递中创建新向量)
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
有谁知道更高效、更优雅的方法吗?
【问题讨论】:
-
在 C++11 中,vector 会被移动,所以它不是低效的。
-
你的问题让我很困惑。
mainBuffer是vector<char>还是vector<vector<char>>?