我正在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);
}
}
该代码是正确的,但你的载体中有零个元素,所以你不能访问big[i]
循环之前设置的矢量大小,无论是在构造函数或像这样:
big.resize(ruleNum);
或者,也可以在推每个循环步骤空载体:
big.push_back( vector<string>() );
你不需要周围的括号big[i]
无论是。
哟可以与大小的矢量开始ruleNum
vector <vector<string> > big(ruleNum);
这将保持ruleNum
空vector<string>
元素。 然后,您可以推的元素返回到每一个,因为你正在做在您发布的例子。
你可以做到以下几点:
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);
}
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);