首先,强调不能使用传统方法去创建二维vector,比如:
#include <stdio.h>
#include <map>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int N;
int K;
cin>>N;
vector< vector<int> > vt;
for(int i=0;i<N;i++)
{
cin>>K;
vector<int> te;
int temp;
for(int j=0;j<K;j++)
{
cin>>vt[i][j];
}
}
}
这是不行的,因为并没有明确vector的容量,因此无法确定其索引。
可以改进为(提前声明好长度):
#include <stdio.h>
#include <map>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int N;
int K;
cin>>N;
vector< vector<int> > vt(10,vector<int>(10,0));
for(int i=0;i<N;i++)
{
cin>>K;
for(int j=0;j<K;j++)
{
cin>>vt[i][j];
}
}
}
或者(使用push_back函数压入):
#include <stdio.h>
#include <map>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int N;
int K;
cin>>N;
vector< vector<int> > vt;
for(int i=0;i<N;i++)
{
cin>>K;
vector<int> te;
int temp;
for(int j=0;j<K;j++)
{
cin>>temp;
te.push_back(temp);
}
vt.push_back(te);
}
}