【vector】创建一个二维vector当作二维数组用

 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 };
原文地址:https://www.cnblogs.com/cnblogsnearby/p/4611452.html