一、定義二維數組的兩種方式:
//初始化一個m*n的二維數組 vector<vector<int> > array(m); for(int i=0;i<m;i++) { array[i].resize(n); }
//創建一個row行,column列(初始值均為0)的二維數組 vector<vector<int>> vec(row,vector<int>(column,0));
C++構建二維動態數組
int **p; p = new int*[10]; //注意,int*[10]表示一個有10個元素的指針數組 for (int i = 0; i < 10; ++i) { p[i] = new int[5]; }
二、使用迭代器對二維數組遍歷
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; } }
三、練習題
867. 轉置矩陣
給你一個二維整數數組 matrix, 返回 matrix 的 轉置矩陣 。
矩陣的 轉置 是指將矩陣的主對角線翻轉,交換矩陣的行索引與列索引。
class Solution { public: vector<vector<int>> transpose(vector<vector<int>>& matrix) { int row=matrix.size(); //表示原矩陣有row行 int column=matrix[0].size(); //表示原矩陣有column列 vector<vector<int>> vec(column); for(int i=0;i<column;i++) { vec[i].resize(row); } //等價於vector<vector<int>> vec(column,vector<int>(row,0)); for(int i=0;i<row;i++) { for(int j=0;j<column;j++) { vec[j][i]=matrix[i][j]; } } return vec; } };
