我正在接受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);
}
}
答案 0 :(得分:13)
代码是正确的,但您的向量中包含零元素,因此您无法访问big[i]
。
在构造函数中设置循环前的向量大小,或者像这样:
big.resize(ruleNum);
或者,您可以在每个循环步骤中推送空向量:
big.push_back( vector<string>() );
big[i]
周围的括号也不需要。
答案 1 :(得分:5)
哟可以从大小为ruleNum
vector <vector<string> > big(ruleNum);
这将保留ruleNum
个空vector<string>
元素。然后,您可以将元素推回到每个元素中,就像您在发布的示例中所做的那样。
答案 2 :(得分:4)
您可以执行以下操作:
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);
}
答案 3 :(得分:2)
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);