#include<bits/stdc++.h>
using namespace std;
main()
{
vector<vector<int> > v;
for(int i = 0;i < 3;i++)
{
vector<int> temp;
for(int j = 0;j < 3;j++)
{
temp.push_back(j);
}
//cout<<typeid(temp).name()<<endl;
v[i].push_back(temp);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试分配一个二维向量.我收到以下错误
No matching function for call to
std ::vector<int>::push_back(std::vector<int> &)
Run Code Online (Sandbox Code Playgroud)
你可以按照这个过程:
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<vector<int> > v;
for(int i = 0;i < 3;i++)
{
vector<int> temp;
for(int j = 0;j < 3;j++)
{
temp.push_back(j);
}
//cout<<typeid(temp).name()<<endl;
v.push_back(temp);
}
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
cout << v[i][j] << " ";
}
cout << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
v[0] 是空的,你应该使用 v.push_back(temp);
您可以使用at方法来避免此错误:
for(int i = 0; i < 3; i++){
vector <vector <int> > v;
vector <int> temp;
v.push_back(temp);
v.at(COLUMN).push_back(i);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以访问它:
v.at(COLUMN).at(ROWS) = value;
Run Code Online (Sandbox Code Playgroud)