C++ vector之建立二維陣列
阿新 • • 發佈:2019-01-27
標頭檔案:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
申明二維陣列:
vector<vector<int>>vec;//巢狀申明
此時的vec.size為0,空有其名,沒有空間大小,並不能用來訪問元素,此時可以向vec中新增一維向量
方案一:
vec.push_back(vector<int>());
vector()的()中可以新增引數vector(m,n),其中m為一維向量的大小,預設為0,n為一維向量中的元素,預設為0.
方案二:
vec.resize(1);
vec.resize()有兩個引數(m,n),m為vec的大小,n為vector(),也就是申明vec時vector<>vec中尖括號之間的東西。
到此我們也可看出,vector二維陣列其實就是一個巢狀,因此我們也可以這樣理解:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
#define type vector < int >
#define type_size 6 //大小自定
#define type_value 3 //大小自定
#define vec_size 6 //大小自定
#define vec_value type(type_size,type_value)//引數可不要
int main()
{
vector<type> vec(vec_size,vec_value);//申明二維向量,vec_size指定大小,vec_value指定初始值,兩引數預設為0,都可不要
vec.push_back(vec_value); //新增一個一維向量
vec.resize(vec_size, vec_value); //重新指定二維向量的大小,不足的用vec_vauet(一維向量)填充
return 0;
}
例如:
申明一個m*n的二維陣列並初始化為0
vector<vector<int>>vec(m,vector<int>(n,0)); //m*n的二維vector,所有元素為0