1 二维数组定义方式:
#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
实例1
int main()
{
int A=5, B=6;
vector<vector<int> > obj(A); //定义二维动态数组大小5行 > > 之间要留空格
for(int i =0; i< obj.size(); i++)//动态二维数组为5行6列,值全为0
{
obj[i].resize(B); 修改容器大小 v.resize()
}
for(int i=0; i< obj.size(); i++)//输出二维动态数组
{
for(int j=0;j<obj[i].size();j++)
{
cout<<obj[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
实例2
int main()
{
int A=5, B=6;
vector<vector<int> > obj(A, vector<int>(B)); //定义二维动态数组5行6列
for(int i=0; i< obj.size(); i++)//输出二维动态数组
{
for(int j=0;j<obj[i].size();j++)
{
cout<<obj[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
out result:
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
利用push_back()或emplace_back()
{
vector<vector<int>> v;
vector<int> a;
a.push_back(1);
a.push_back(2);
a.emplace_back(3);
vector<int> b;
b.push_back(3);
b.push_back(4);
b.emplace_back(5);
vector<int> c;
c.emplace_back(7);
c.emplace_back(8);
c.emplace_back(9);
v.push_back(a);
v.push_back(b);
v.emplace_back(c);//将一维数组正行传到二维数组中去 ,理论上emplace_back传入效率要高于push_back
int i, j;
cout << "Use index : " << endl;
for (i = 0; i < v.size(); i++) {
for (j = 0; j < v[0].size(); j++)
cout << v[i][j] << " ";
cout << endl;
}
}
Use index :
1 2 3
3 4 5
7 8 9
2 二维数组行数和列数的获取
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
//创建4*5二维数组,并将数组元素的值都设为1
vector<vector<int>> dp(4, vector<int>(5, 1));
//打印二维数组
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++)
cout << dp[i][j] << " ";
cout << endl;
}
cout << endl;
int m = dp.size();//行数
int n = dp[0].size();//列数
cout << "m = " << m << endl;
cout << "n = " << n << endl;
return 0;
}
3 二维遍历打印
方法1 使用迭代器遍历
void reverse_with_iterator(vector<vector<int>> vec)
{
if (vec.empty())
{
cout << "The vector is empty!" << endl;
return;
}
vector<int>::iterator it;
vector<vector<int>>::iterator iter;
vector<int> vec_tmp;
cout << "Use iterator : " << endl;
for(iter = vec.begin(); iter != vec.end(); iter++)
{
vec_tmp = *iter;
for(it = vec_tmp.begin(); it != vec_tmp.end(); it++)
cout << *it << " ";
cout << endl;
}
}
方法2 使用.size()进行遍历
void reverse_with_index(vector<vector<int>> vec)
{
if (vec.empty())
{
cout << "The vector is empty!" << endl;
return;
}
int i,j;
cout << "Use index : " << endl;
for (i = 0; i < vec.size(); i++)
{
for(j = 0; j < vec[0].size(); j++)
cout << vec[i][j] << " ";
cout << endl;
}
}