1. 程式人生 > >C++ vector之建立二維陣列

C++ vector之建立二維陣列

標頭檔案:

#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