将vector <char>复制到2d vector <string> c ++ </string> </char>

时间:2014-03-08 19:20:22

标签: c++ vector stl lambda

是否有一种简单的方法可以将矢量char复制到2d矢量字符串中的位置,同时将2d矢量保留为成员变量?

例如:

我想将缓冲区复制到data [0] [0]

class foo
{
private:
    vector<vector<string>> data;
};

在某处

vector<char> buffer = {copyMe}  

2 个答案:

答案 0 :(得分:0)

#include <algorithm> // std::copy
#include <iterator>  // std::back_inserter

std::copy(buffer.begin(), buffer.end(), std::back_inserter(data[0][0]));

这会将buffer的内容附加到data[0][0]的字符串。

答案 1 :(得分:0)

基本上我们可以使用memcpy将矢量复制到另一个中,如果这些矢量类型相同

std::vector<char> vc;
//...
std::vector<char> vs;
vs.resize( vc.size());
memcpy( &vs[0], &vc[0], vs.size());

std::copy( vc.begin(), vc.end(), vs.begin());

但是,由于不同类型charstd::string投射不起作用。我们可以逐个元素地循环复制,这样:

std::vector<char> vc;
//...
std::vector<std::string> vs;
for ( size_t i = 0; i < vc.size(); i++) {
  vs.push_back( std::string(&vc[i], &vc[i+1]));
}