1986年世界杯_世界杯年份 - duowuon.com

  • 首页
  • 世界杯比赛结果
  • 卡塔尔世界杯球场
  • 世界杯最终排名

怎样初始化二维vector

2025-07-08 18:28:45 | 世界杯比赛结果

二维vector的初始化方法总结

初始化一个 二维vector,行M,列N学会用大括号初始化二维数组初始化一个 二维vector,行M,列不固定初始化一个二维vector,行列都不固定注意初始化二维vector为空时的情况leetcode例题1leetcode例题2

以定义一个二维整形数组并初始化为例:

初始化一个 二维vector,行M,列N

// 初始化一个 二维的matrix, 行M,列N,且值为0

vector> matrix(M,vector(N));

//等价于下面的

vector > matrix(M);

for(int i=0;i

matrix[i].resize(N);

}

//等价于下面的

vector< vector > matrix;

matrix.resize(M);//M行

for(int i=0;i

matrix[i].resize(N);//每一行都是N列

}

// 初始化一个 二维的matrix, 行M,列N,且值自定义为data;

vector> matrix(M,vector(N,data));

学会用大括号初始化二维数组

//初始化空的二维vector,到底是{}还是{{}},请看最下面的两个leetcode例题

vector> matrix1{};

或者

vector> matrix1{{}};

//初始化列表

vector> matrix2{ {1},{1,1} };//学会用大括号初始化二维数组

matrix1.push_back({ 1,2,1 });//插入

初始化一个 二维vector,行M,列不固定

vector>matrix(M);//M行,列数不固定

int col;

vector temp;

for(int i=0;i

cout<<”please input the col of ”<

cin>>col;//确定第i行的列数

cout<

for(int j=0;j

int data;

cin>>data;

temp.push_back(data);

}

matrix[i]=temp;

temp.clear();

}

初始化一个二维vector,行列都不固定

#include

#include

using namespace std;

int main()

{

vector> matrix;//行,列数不固定

cout << "please input rows of matrix: " << endl;

int rows;

cin >> rows;

matrix.resize(rows);

int col;

vector temp;

for (int i = 0; i < rows; i++) {

cout << "please input the cols of " << i << "th row" << endl;

cin >> col;//确定第i行的列数

cout << i << "th row has " << col << " cols," << "please input these" << endl;

for (int j = 0; j < col; j++){

int data;

cin >> data;

temp.push_back(data);

}

matrix[i] = temp;

temp.clear();

}

cout << "output matrix:" << endl;

for (int i = 0; i < matrix.size(); i++) {

for (int j = 0; j < matrix[i].size(); j++) {

cout << matrix[i][j] << " ";

}

cout << endl;

}

cout << endl;

return 0;

}

测试结果如下:

注意初始化二维vector为空时的情况

leetcode例题1

118.杨辉三角

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]

class Solution {

public:

vector> generate(int numRows) {

//学会用大括号初始化二维数组

if(numRows==0) return{};

if(numRows==1) return{{1}};

if(numRows==2) return{{1},{1,1}};

vector> ans(numRows);

ans[0]={1};

ans[1]={{1},{1}};

vector temp;

for(int i=3;i<=numRows;i++){

temp.push_back(1);

for(int j=0;j

temp.push_back(ans[i-2][j]+ans[i-2][j+1]);

}

temp.push_back(1);

ans[i-1]=temp;

temp.clear();

}

return ans;

}

};

leetcode例题2

前面一题返回空的二维vector时,返回的是{}

但是今天遇到一个题,在返回空的二维vector时,必须返回{{}}

题目记录如下: 面试题 08.04. 幂集 幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。 说明:解集不能包含重复的子集。 示例: 解题思路: 1.递归, 2.回溯

这里只讲递归的解法: subsets([1,2,3])={[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]} subsets([1,2])={[],[1],[2],[1,2]}

可以发现 subsets([1,2,3])=subsets([1,2]) + subsets([1,2])中的每一个子集中插入3

vector> subsets(vector& nums) {

int N=nums.size();

//注意这里必须返回{{}},不能是{}

if(N==0) return{{}};

int tail=nums.back();

nums.pop_back();

//递归

vector> sub=subsets(nums);

//注意nums是引用,所以在底层递归向上层递归返回时,要恢复删除的尾部元素

nums.push_back(tail);

vector> res(sub);

for(auto& i:sub){

i.push_back(tail);

res.push_back(i);

}

return res;

}

这里只想关注一个点,针对这一题,当nums.size()==0时,我们返回空的二维vector,必须是 {{}}

由上面两个例题可以看出,对于空的二维vector,可能是用{}初始化,也可能是用{{}}初始化,具体用哪一种,得看一下题目在返回空的二维vector时,要求返回的是啥,

如果题目在返回空的二维vector时,返回的是 [],这是我们程序中对应用{};如果题目在返回空的二维vector时,返回的是 [[]],这是我们程序中对应用{{}};

什么地飞舞词语填空
怎么强制访问情侣空间
友情链接:
Copyright © 2022 1986年世界杯_世界杯年份 - duowuon.com All Rights Reserved.