一、初始化
首先需要知道二维vector如何获得行数与列数。
int row=a.size();//通过a.size()获取行数。因为a中的元素是vector,有几个vector就有几行
int column=a[i].size();//通过a[i].size()获取第i+1行(假定第一行为首行)有多少元素,即可知列数。
size()可求vector中有效数据的数量。capacity()求的是容量。
方法一:直接在定义时进行初始化
vector<vector<int>>array(r,vector<int>(c,0));
定义了一个r行c列的二维数组,且初始值为0.
方法二:用resize
vector<vector<int>>a(r);//r不可少,规定了行数
for (int i = 0; i < r; i++)
{
a[i].resize(c, k);
}
定义了一个r行c列初始值为3的二维数组。如果不写3则默认为0
实例:
vector<vector<int>>array2(3);
for (int i = 0; i < array2.size(); i++)
{
array2[i].resize(3, i);
}
cout << "未改动前:" << endl;
for (int i = 0; i < array2.size(); i++)
{
for (int j = 0; j < array2[i].size(); j++)
{
cout << array2[i][j] << " ";
}
cout << endl;
}
结果:
二、添加与删除:以第一行、第一列为首行首列
添加一行:
vector<int>inrow(5,6);//初始化了一个一维数组,有5个元素,并且全为6
a.insert(a.begin()+2,inrow);//将inrow数组插入到了二维数组的第二行后
实例:
vector<int>wta(3, 10);//一个一维数组,有3个元素,初始化为10
array2.insert(array2.begin() + 2, wta);
cout << "添加一行后:" << endl;
for (int i = 0; i < array2.size(); i++)
{
for (int j = 0; j < array2[i].size(); j++)
{
cout << array2[i][j] << " ";
}
cout << endl;
}
结果:
添加一列:
for(int i=0;i<a.size();i++)
{
a[i].insert(a[i].begin()+2,9);//在第二列后插入其元素全为9的一列。
}
实例:
for (int i = 0; i < array2.size(); i++)
{
array2[i].insert(array2[i].begin() + 2,9);
}
结果:
删除行:
a.erase(a.begin()+m,a.begin()+n);//删除第m+1~n行(包括m+1,n)
实例:
array2.erase(array2.begin() + 1, array2.begin() + 3);
结果:
删除列:
for (int i = 0; i < a.size(); i++)
{
a[i].erase(a[i].begin()+m, a[i].begin() + n);//删除第m+1~n列(包括m+1,n)
}
实例:
for (int i = 0; i < array2.size(); i++)
{
array2[i].erase(array2[i].begin(), array2[i].begin() + 2);
}
结果: