怎样初始化二维vector

article/2025/8/28 19:37:49

二维vector的初始化方法总结

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

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

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

// 初始化一个 二维的matrix, 行M,列N,且值为0
vector<vector<int>> matrix(M,vector<int>(N));
//等价于下面的
vector<vector<int> > matrix(M); 
for(int i=0;i<M;i++) {matrix[i].resize(N);
}
//等价于下面的
vector< vector<int> > matrix;
matrix.resize(M);//M行
for(int i=0;i<matrix.size();i++){matrix[i].resize(N);//每一行都是N列
}// 初始化一个 二维的matrix, 行M,列N,且值自定义为data;
vector<vector<int>> matrix(M,vector<int>(N,data));

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

//初始化空的二维vector,到底是{}还是{{}},请看最下面的两个leetcode例题
vector<vector<int>> matrix1{};
或者
vector<vector<int>> matrix1{{}};//初始化列表
vector<vector<int>> matrix2{ {1},{1,1} };//学会用大括号初始化二维数组
matrix1.push_back({ 1,2,1 });//插入

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

vector<vector<int>>matrix(M);//M行,列数不固定int col;
vector<int> temp;
for(int i=0;i<M;i++){cout<<”please input the col of ”<<i<<” row”<<endl;cin>>col;//确定第i行的列数cout<<i<<” row has ”<<col<<” col”<<” please input these”<<endl;for(int j=0;j<col;j++{int data;cin>>data;temp.push_back(data);}matrix[i]=temp;temp.clear();
}

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

#include <iostream>
#include<vector>
using namespace std;
int main()
{vector<vector<int>> matrix;//行,列数不固定cout << "please input rows of matrix: " << endl;int rows;cin >> rows;matrix.resize(rows);int col;vector<int> 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<vector<int>> generate(int numRows) {//学会用大括号初始化二维数组if(numRows==0) return{};if(numRows==1) return{{1}};if(numRows==2) return{{1},{1,1}};vector<vector<int>> ans(numRows);ans[0]={1};ans[1]={{1},{1}};vector<int> temp;for(int i=3;i<=numRows;i++){temp.push_back(1);for(int j=0;j<i-2;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<vector<int>> subsets(vector<int>& nums) {int N=nums.size();//注意这里必须返回{{}},不能是{}if(N==0) return{{}};int tail=nums.back();nums.pop_back();//递归vector<vector<int>> sub=subsets(nums);//注意nums是引用,所以在底层递归向上层递归返回时,要恢复删除的尾部元素nums.push_back(tail);vector<vector<int>> res(sub);for(auto& i:sub){i.push_back(tail);res.push_back(i);}return res;} 

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

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

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

http://chatgpt.dhexx.cn/article/H3W08vNJ.shtml

相关文章

c++之vector 及 二维容器vector<vector<int>>初始化方法 及 三维数组初始化

C二维容器vector<vector>初始化方法解析 遇到的问题&#xff1a; 在解决“求最大字串”问题时想到了用二位数组vector<vector<int>> table&#xff0c;但是不知道怎么对其进行初始化&#xff08;初始化时指定二维容器的大小&#xff09;,于是网上搜索一番&a…

打算自学一些编程,想兼职程序员打零工,想问问现在哪个程序员兼职平台单子简单,不考察接单人学历?

兼职平台接单&#xff0c;都不查学历。 等你具备最基本的可以接单的技术能力时&#xff0c;找个技术工作&#xff0c;随随便便一份都能有2000以上。但是&#xff0c;自己接单&#xff1f;实不相瞒&#xff0c;会饿死的。没有什么钱是从一开始就坐在家里轻轻松松能赚到的。除非…

有哪些适合程序员的兼职?

前言 程序员兼职的方式有多种&#xff0c;在回答题主这个问题之前&#xff0c;我们先来了解一下当前互联网行业程序员为什么会选择兼职。 为什么程序员想要兼职&#xff1f; 在别人眼中程序员那是一个高薪的职业&#xff0c;近些年来&#xff0c;越来越多的程序员想在工作之…

不得不说,这19个程序员兼职平台让我1年收入60w

关于程序员接私活&#xff0c;社会各界说法不一。 按我的观点来说&#xff0c;如果你确实急用钱&#xff0c;价格又合适&#xff0c;那就去做。 如果不怎么缺钱&#xff0c;那就接私活之前要好好考虑。 私活的钱不好挣是一个方面&#xff0c;更重要的是如果你把做私活的时间花在…

程序员兼职十大网站

前言 今天给大家介绍几个接私活的网站&#xff0c;接私活比较辛苦&#xff0c;如果弄不好的话&#xff0c;就是纯体力的劳动&#xff0c;大家也可以尝试做兼职远程开发。需要挣个生活费的小伙伴们&#xff0c;或者在校学生想锻炼自己的&#xff0c;可以去尝试一下。以下网站仅供…

各大程序员兼职平台靠谱嘛?这一篇文章就够了

搜索”程序员兼职“&#xff0c;能搜索到一堆营销软文&#xff0c;无非也就是你抄我&#xff0c;我抄你&#xff0c;换换顺序&#xff0c;今天我们不光谈优点&#xff0c;特点&#xff0c;还谈谈缺点&#xff0c;和大家关心的服务费问题&#xff0c;让大家看看到底哪个平台靠谱…

程序员去哪接私活?分享10个兼职平台,人已赚麻

你们当程序员不会都拿着几千、万把块钱的死工资吧&#xff0c;今天为大家分享一些可以接私单的平台&#xff0c;我反正已经赚麻了。 如果你的工作相对没那么费时间&#xff0c;可以空闲的时候去接点私活。或者是还没有找工作之前&#xff0c;可以通过一些平台接一些兼职&#…

Java程序员兼职平台推荐

有不少程序员兄弟时不时会私信问我&#xff0c;说自己是Java程序员&#xff0c;下班后或者是周六周末想要自己做点事情&#xff0c;有不有合适的Java兼职平台&#xff0c;在这里就做一个统一的回答&#xff1a; 平台到处都有&#xff0c;你可以找这样的平台,然后这样: 也可以找…

19个程序员兼职平台

关于程序员接私活&#xff0c;社会各界说法不一。 按我的观点来说&#xff0c;如果你确实急用钱&#xff0c;价格又合适&#xff0c;那就去做。 如果不怎么缺钱&#xff0c;那就接私活之前要好好考虑。 私活的钱不好挣是一个方面&#xff0c;更重要的是如果你把做私活的时间…

程序员兼职网站大全

在网上收集整理了一些程序员兼职网站&#xff0c;国内外都有&#xff0c;方便大家查阅使用。 一、国内垂直众包平台 1、猿急送-程序员兼职平台&#xff1a;https://www.yuanjisong.com/ 猿急送是于15年成立&#xff0c;国内起步很早的垂直众包平台&#xff0c;目前提供的兼职…

13个最靠谱的程序员兼职平台 想接私活的赶紧看过来

作为程序员&#xff0c;你有没有想过做些兼职&#xff0c;让自己的收入翻倍&#xff1f;有没有疑惑过身边的同事是从哪里接到那些私活的&#xff1f; 看完这篇文章你就能找到答案&#xff01; 其实网上有不少给程序员提供兼职的平台&#xff0c;老K根据自己和身边朋友的经验&a…

程序员兼职接私活平台大全,兼职也能月薪上万

前言 PS&#xff1a;如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 &#x1f449;[[CSDN大礼包&#xff1a;《python兼职资源&全套学习资料》免费分享]]&#xff08;安全链接&#xff0c;放心点击&#xff09; 根据我们的经验&#xff0c;程序员兼职主要分为…

10个程序员可以接私活的平台和一些建议,兼职必看

今天为大家分享一些可以接私单的平台&#xff0c;相信大家学习编程未来是希望成为一个软件工程师或者码农&#xff0c;找到好的工作&#xff0c;有好的发展。 但是在还没有找工作之前&#xff0c;大家可以通过一些平台接一些兼职&#xff0c;一来能够赚钱&#xff0c;在主页保…

程序员接单必看的五个平台,最后一个赚麻了

当大多数程序员还拿着万把块钱的死工资时&#xff0c;有些人已经自己接私活赚麻了&#xff0c;今天为大家分享一些可以接私单的平台。 如果你的工作相对没那么费时间&#xff0c;可以空闲的时候去接点私活。或者是还没有找工作之前&#xff0c;可以通过一些平台接一些兼职&…

linux 查看版本的命令

1、通过 cat /proc/version 、uname 2、通过cat /etc/issue 、cat /etc/redhat-release 3、查看64位还是32位&#xff1a; 4、使用 file /bin/ls

Linux查看Gitlab版本

命令如下&#xff1a; cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

Linux系列之查看CentOS版本

文章の目录 写在最后 使用命令 [rootVM-4-12-centos local]# cat /etc/centos-release返回的结果如下图&#xff1a; 我这里的版本是CentOS7。 写在最后 如果你感觉文章不咋地//(ㄒoㄒ)//&#xff0c;就在评论处留言&#xff0c;作者继续改进&#xff1b;o_O??? 如果你觉得…

kali linux查看版本,kali linux 系统版本的查看方法

kali linux 系统版本的查看方法 1. kali linux 系统版本查看 命令:cat /etc/issue 2. kali linux系统内核信息查看 命令:uname -a 以上这篇kali linux 系统版本的查看方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。 时间: 2019-07-08…

查看Linux系统版本信息

扫码关注获取更多IT知识 在使用Linux操作系统的时候&#xff0c;有时候会需要了解当前使用的系统版本信息&#xff0c;特别是在给别人进行服务器部署运维的时候&#xff0c;准确的系统版本信息至关重要&#xff0c;今天明月就给大家分享几个获取 Linux 系统版本信息的命令。 一…

linux release 版本的区别,Linux 查看版本信息

简介 Linux有很多发行版本,一般通过内核就可以判断大致的发行版本。但是如果需要详细的发行版本信息,就可以借助命令进行查看。 lsb_release 显示LSB(Linux Standard Base)兼容的发行版本信息。如果是LSB兼容的发行版本,在/etc/lsb-release就可以查看到具体的版本信息。 lsb…