如何推回上向量的载体?(how to pushback on a vector of vectors

2019-08-17 17:41发布

我正在20日线的投入。 我想通过一个空间,以每行的内容分开,放入向量的向量。 如何使向量的载体? 我有有斗争推回...

我的输入文件:

Mary had a little lamb
lalala up the hill
the sun is up

矢量看起来应该是这样的。

ROW 0: {"Mary","had", "a","little","lamb"}
ROW 1: {"lalala","up","the","hill"}

这是我的代码....

string line; 
vector <vector<string> > big;
string buf;
for (int i = 0; i < 20; i++){
    getline(cin, line);
    stringstream ss(line);

    while (ss >> buf){
        (big[i]).push_back(buf);
    }
}

Answer 1:

该代码是正确的,但你的载体中有零个元素,所以你不能访问big[i]

循环之前设置的矢量大小,无论是在构造函数或像这样:

big.resize(ruleNum);

或者,也可以在推每个循环步骤空载体:

big.push_back( vector<string>() );

你不需要周围的括号big[i]无论是。



Answer 2:

哟可以与大小的矢量开始ruleNum

vector <vector<string> > big(ruleNum);

这将保持ruleNumvector<string>元素。 然后,您可以推的元素返回到每一个,因为你正在做在您发布的例子。



Answer 3:

你可以做到以下几点:

string line; 
vector <vector<string> > big;  //BTW:In C++11, you can skip the space between > and >

string currStr;
for (int i = 0; i < ruleNum; i++){
    getline(cin, line);
    stringstream ss(line);
    vector<string> buf;
    while (ss >> currStr){
       buf.push_back(buf);
    }
    big.push_back(buf);
}


Answer 4:

              vector<vector<string> > v;

到的push_back到载体的载体,我们将在的push_back内部矢量串和的push_back内部向量到外部载体。

简单的代码来显示它的实现:

vector<vector<string> > v;
vector<string> s;

s.push_back("Stack");
s.push_back("oveflow");`
s.push_back("c++");
// now push_back the entire vector "s" into "v"
v.push_back(s);


文章来源: how to pushback on a vector of vectors?
标签: c++ vector