1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 int main() 6 { 7 int m, n; 8 cin >> m >> n; 9 vector<vector<int> > value(m, vector<int>(n)); // 两个>用空格分开 10 for (int i = 0; i < m; i++){ 11 for (int j = 0; j < n; j++){ 12 int temp; 13 cin >> temp; 14 value[i].push_back(temp); 15 } 16 } 17 18 }
7月15日更新:
在使用二维数组的时候,考虑到传参数时需要指定列数的大小的不便性,起初是想用二维vector,后面为了操作的方便性,用了一维数组取代二维数组作为形参。
又查了对二维vector的赋值,简单到跟二维数组很相似。
1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main(){ 7 int row, col; 8 cin >> row >> col; 9 vector<vector<int>> ivec(row); 10 for (int i = 0; i < row; i++){ 11 ivec[i].resize(col); //指定了大小 12 for (int j = 0; j < col; j++){ 13 int val; 14 cin >> val; 15 //ivec[i].push_back(val); 16 ivec[i][j] = val; 17 } 18 } 19 for (int i = 0; i < row; i++) 20 for (int j = 0; j < col; j++) 21 cout << ivec[i][j] << " "; 22 23 return 0; 24 }
7月17日更新:
做leetcode上二叉树层次遍历后,把结果存储在二维vector上的题,看讨论区别人的代码,看到另外的创建二维数组的方法。
1 int main(){ 2 vector<vector<int>> ivec; 3 int m, n; 4 cin >> m >> n; 5 for (int i = 0; i < m; i++){ 6 ivec.push_back(vector<int>()); //vector<int>()是一空vector 和上一种方法resize可等同 7 for (int j = 0; j < n; j++){ 8 int temp; 9 cin >> temp; 10 ivec[i].push_back(temp); 11 } 12 } 13 for (int i = 0; i < m; i++) 14 for (int j = 0; j < n; j++) 15 cout << ivec[i][j] << " "; 16 17 return 0; 18 }
注意二维vector的行、列大小的确定
int row = value.size(); int col = value[0].size();
附《剑指offer》中“二维数组中的查找”一题
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
举一个例子
1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15
要找出7是否存在,把目标数跟该数组的右上角/左下角做对比,缩小查找的范围。
1 class Solution { 2 public: 3 bool Find(vector<vector<int> > array,int target) { 4 if (array.empty()) 5 return false; 6 int lenRow = array.size(); 7 int lenCol = array[0].size(); 8 9 int row = 0; 10 int col = lenCol - 1; 11 while (row < lenRow && col >= 0){ 12 if (array[row][col] == target) 13 return true; 14 else if (array[row][col] > target) 15 col--; 16 else 17 row++; 18 } 19 return false; 20 } 21 };