如何对向量中的一个向量进行推回

how to pushback on a vector of vectors?

本文关键字:向量 一个      更新时间:2023-10-16

我要输入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]周围也不需要括号。

Yo可以从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;

要将pushback推到向量的向量中,我们将pushback字符串推到内部向量中,将pushback内部向量推到外部向量中。

展示其实现的简单代码:

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);