C++中vector<vector<int> > ***使用教程

Vector创建二维数组 然而,在选择使用vector创建二维数组时,也需要考虑到其可能带来的性能开销,并根据具体的应用场景进行权衡。创建一个vector,其元素类型为另一个vector,即vector<vector<T>>,其中T是数组中元素的类型(如int、double等)。添加行或列:通过push_back方法可以在二维数组的末尾添加新的行,而要在已有行中添加列,则需要对特定的内部vector使用push_back。删除行或列:使用erase方法可以从二维数组中删除特定的行,而删除列则需要从对应的内部vector中删除元素。 阅读详情

vector<vector >后面的尖括号前面要加上空格,否则在有些编译器可能出现问题

1、定义二维vector
vector<vector<int> > pre;
访问二维vector的元素: 如果指定外层和内层向量的大小,就可用operator[]进行读和写;如果只指定外层向量大小,就能用push_back()函数进行写,不能用operator[]进行读和写。

  1. 创建m*n的二维vector:
vector<vector <int> >nums(m ,vector<int>(n)); //m*n的二维vector

定义了一个vector容器,元素类型为vector,初始化为包含m个vector对象,每个对象都是一个新创立的vector对象的拷贝,而这个新创立的vector对象被初始化为包含n个0。
vector(n)表示构造一个无名且含n个0的vector对象。

  1. 动态创建m*n的二维vector
    方法一:
vector<vector <int> > nums;
nums.resize(m);
for(int i=0;i<m;i++) nums[i].resize(n);

方法二:

vector<vector <int> > nums;
nums.resize(m,vector<int>(n));
  1. 初始化二维数组
vector<vector <int> > nums(m ,vector<int>(n,0)); //m*n的二维vector,所有元素为0

获得二维数组的行数:nums.size();
获得二维数组的列数:nums[0].size()

  1. 数组遍历
int m = nums.size(),n = nums[0].size();
for(int i = 0; i < m; i++){
    for(int j = 0; j < n; j++){
        cout<<nums[i][j]<<endl;
    }
}

2、 vector< vector<int> > v(m, vector<int>(n) );
定义了一个vector容器,元素类型为vector,初始化为包含m个vector对象,每个对象都是一个新创立的vector对象的拷贝,而这个新创立的vector对象被初始化为包含n个0。
从结果上看,类似于创建了一个m×n的二维数组,而且可以通过v[i][j]的方式来访问元素(vector支持下标访问元素)。

3、 vector< vector <int> > dp(m, vector<int>(n) )

vector<类型>标识符(最大容量,初始所有值)
vector< vector<int> > v(m, vector<int>(n) );

定义了一个vector容器,元素类型为vector,初始化为包含m个vector对象,每个对象都是一个新创立的vector对象的拷贝,而这个新创立的vector对象被初始化为包含n个0。

2024年最新【C++】详解vector二维数组的全部操作(超细图例解析,2024年最新一名毕业三年的女程序媛面试头条经验 的强大是众所周知滴,早晚都是要解决滴,因此专门写下这篇文章,以供自己复习和各位老铁使用,快速的回忆vector的用法,让你找回自信,不用再竞赛的时候颜面尽失。所以针对问题二出现的原因:vector 直接根据下标访问必须要先push,存在数才行。中,创建一维数组或者更高维度的数组时,都是需要提前给他分配大小的。观察规律,可以得出如下的初始化格式:容器(大小,内容)(2)下面定义的是行为r,列为c的二维数组,初始值为0。(1)下面定义的是行为r,列为c的二维数组。中我们并不需要那么做,我们可以直接。 阅读详情

相关推荐

C++容器vector(最基础的内容) 二维vector的初始化 添加 删除 访问

C++容器vector(最基础的内容) 二维vector的初始化 添加 删除 访问

IT_涛涛 601

vector创建数组(一维、二维)的超详细总结

今天刷leetcode的时候,发现vector都还没用明白,但是STL早晚要解决明白,因此作者专门写下这篇文章,以供自己复习等使用,快速回忆其vector的用法,不再丢人

小黑同学的博客 2万+

C++ vector嵌套vector:动态二维结构的内存管理本质

在C++中,vector嵌套vector(如vector<vector<int>>)并非简单的语法嵌套,而是一种面向动态二维数据的RAII内存管理范式。其核心原理在于外层vector管理内层vector对象生命周期,每层独立堆分配,实现行级动态扩容与不等长支持。相比传统二维数组或三重指针,它显著提升类型安全、边界可检性与工程可维护性,规避手动内存管理和指针悬空风险。典型应用场景包括JSON嵌套数组解析、稀疏图邻接表、日志字段动态解析及技能树前置依赖建模。本文深入剖析其内存布局差异、五大高频误操作及Hybri

weixin_30786657的博客 400

【C++】详解vector二维数组的全部操作(超细图例解析!!!)

最近在刷 Leetcode 的时候,发现 vector 的二维数组操作 都还没弄明白吗,但是STL的强大是众所周知滴,早晚都是要解决滴,因此专门写下这篇文章,以供自己复习和各位老铁使用,快速的回忆vector的用法,让你找回自信,不用再竞赛的时候颜面尽失。

weixin_45031801的博客 7万+

C/C++服装销售管理系统:从零到一的项目实战指南

信息管理系统是软件工程中连接理论与实践的经典项目类型,其核心在于将现实世界的业务逻辑(如进销存)通过数据结构与算法进行抽象建模。在C/C++语言中,这通常涉及面向对象编程思想,通过定义类来封装数据与行为,并利用文件操作实现数据的持久化存储。掌握这类系统开发,不仅能深化对指针、内存管理等底层概念的理解,更能锻炼模块化设计与工程化思维,为后续学习数据库、网络编程等高级主题打下坚实基础。本文以服装销售管理为具体应用场景,详细剖析了如何运用C++的STL容器、单例模式等技术,构建一个功能完整、结构清晰的**控制台应

weixin_30251829的博客 346

C++智能指针实战:RAII机制与数组内存管理的4个核心战场

内存管理是C++等系统级编程语言的核心课题,而内存泄漏则是其中最常见且危害严重的编程错误之一。其根本原理在于动态分配的内存因失去引用而无法被系统回收,最终导致资源耗尽。为解决这一问题,现代C++引入了RAII(资源获取即初始化)这一核心编程范式,通过将资源生命周期与对象生命周期绑定,实现了资源的自动管理。智能指针作为RAII思想在内存管理领域的经典应用,通过封装裸指针并在析构时自动释放内存,极大提升了代码的安全性与可维护性。在工程实践中,智能指针尤其擅长处理动态数组等复杂场景,通过`std::unique_

weixin_30388677的博客 393

c++ vector的常见用法详解

C++ STL中的vector

absence521的博客 250

C++/WinRT入门指南:现代C++调用Windows API的实践教程

在Windows平台开发中,原生应用开发常面临系统API调用的挑战。传统COM编程涉及复杂的引用计数和接口管理,而现代C++标准提供了更简洁的语法和内存管理机制。C++/WinRT作为微软官方推出的语言投影技术,其核心价值在于将Windows运行时(WinRT)API无缝集成到标准C++17及以上环境中,使开发者能够使用熟悉的现代C++特性(如协同程序、智能指针)直接调用系统服务。这项技术特别适用于需要高性能和深度系统集成的场景,如系统工具、硬件交互应用和现代UI开发。通过头文件库的轻量级设计和自动化代码生

weixin_34268579的博客 420

C/C++动态开辟数组【C++:new/delete(推荐):int *arr = new int[m];】【C++:vector】【C:malloc() & free()】

打印结果: 2、动态开辟二维数组 3、动态开辟数组、释放空间 3.1 动态开辟数组 3.2 释放空间 当不再需要一个动态分配的多维数组时,可按以下步骤释放它所占用的空间。 3.3 案例 打印结果: C语言 中malloc()函数的标准形式 C++ 中free()函数的标准形式 注意引用头文件stdlib.h因为数组中必须为常量表达式,如果不是,则此时无法成功创建数组 这时便可以使用动态开辟的方法解决该问题。 补充说明 打印结果: 特点 打印结果: 特点 打印结果: 特点参考资料: c语言动态开辟

u013250861的博客 3996

ArcGIS基础实战:面数据拓扑创建和错误修改全流程

通过下图的操作我们可以发现,图层的【Shape_Length】和【Shape_Area】字段的数值都发生了改变,表明两个图层重叠的那一部分图斑合并到另一个图班上,其面积会减小、长度会变大(自己重新计算一下也可以得到此验证结果的)。如图【拓扑实验结果】文件夹里右键,新建【文件地理数据库】,并进行命名为【xx拓扑检查】备注:养成良好的命名习惯。然后在【xx拓扑检查】下右键打开【新建要素数据集】,并对数据集进行命名为【XX拓扑】,然后进行下一步设置。在【KK拓扑】数据集上右键,新建【拓扑】。

yuanYW7556的博客 1万+

基于粒子群算法的PID控制器优化设计

粒子群算法、PID、寻优

qq_46107700的博客 2万+

C++个人笔记

C++笔记

qq_54046894的博客 799

3D Gaussian Splatting:用于实时的辐射场渲染

3D Gaussian Splatting:用于实时的辐射场渲染 3d gaussian splatting for real-time radiance field rendering

m0_51976564的博客 1万+

C++数组的传值

#C++数组的传值 将数组作为参数进行传递: 有两种传递方法,一种是function(int a[]);另一种是function(int *a)。 这两种两种方法在函数中对数组参数的修改都会影响到实参本身的值! 对于第一种,根据之前所学,形参是实参的一份拷贝,是局部变量。但是数组是个例外,因为数组的数据太多了,将其一一赋值既麻烦又浪费空间,所以数组作为参数传递给函数的只是数组首元素的...

此博客已废弃 3117

Apifox 自动化测试新增流程控制条件,复杂测试场景不再是问题

在 if 条件后的输入框填写请求接口得到的变量 viewed ,选择条件为「小于」,输入比较数值 10 ,并在 if 条件下添加「宠物下架处理」步骤。借助新增的自动化测试流程控制条件,测试人员就可以使用 Apifox 去实现更深层更多样的测试应用场景,帮助提升测试效率,减少复杂场景的测试操作。「查询新建宠物」、「修改宠物状态为已售出」和「查询宠物状态是否修改」步骤为当前在售宠物信息盘点的三个标准步骤,所以将这三个步骤合成一组。在循环中添加「查询在售宠物」和「修改宠物状态」步骤;

878

从零编写linux0.11 - 第二章 内核初始化

编程环境:Ubuntu Kylin 16.04 代码仓库:https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载(不能直接编译,需进行修改) 1.添加内核 进入内核后也不是马上进入main函数,上一章只是暂时设置gdt,此外还要设置idt和其他的一些初始化操作,这些内容也要使用汇编进行编写,此处采用AT&T格式的汇编。 以下为head.s的内容,为了简单起见,内容还是一个死循环。 .globl startup_32 startup_3

皓空Fly的博客 1266

C++控制台贪吃蛇游戏开发实战:从环境配置到完整项目

游戏开发是许多人学习编程的动力,而C++作为游戏工业的核心语言,常让初学者望而却步。其实,理解游戏背后的循环逻辑比掌握复杂引擎更重要。控制台游戏正是入门的最佳实践场景,它无需图形库,却能完整呈现输入处理、状态更新、碰撞检测等核心机制。通过贪吃蛇这个经典案例,我们可以学习如何用类封装游戏状态,用标准库容器管理蛇身,用随机数生成食物,并以主循环驱动整个游戏进程。从VS Code搭配MinGW的环境搭建,到设计模式的应用,每一步都指向真实工程开发。无论是复习C++基础语法,还是为后续学习SFML、Unreal引擎

weixin_30727835的博客 402

配置VScode编译、调试STM32(一)手动配置makefile和debug

做嵌入式的朋友们都应该有过想要有个功能强大的IDE或者编辑器,Keil MDK5、IAR EWARM是用的比较普遍的平台了,但是两者在编辑器方面都比较弱势,当然可以设置 或者使用外部编辑器,像Sourceinsight、notePad++这样,但毕竟需要切换回来进行Build、Debug,非常麻烦。 VScode从发布至今口碑一直很好,而且里面有非常多的插件,比如彩虹括号、Code Runner、...

hanhe0551的博客 4290

C++动态数组

C++入门,动态二维数组,vector使用

m0_64572251的博客 352

【Docker】一招解决超时镜像超时报错:`ERROR: Get https://registry-1.docker.io/v2/`

Docker 镜像拉取超时或失败并不是 Docker 本身的缺陷,而是网络环境和默认配置在特定场景下的限制所导致的结果。通过本文的分析可以看到,问题的核心往往集中在三个方面:网络访问延迟、DNS 解析速度以及客户端默认超时时间。针对这些问题,最直接、有效的做法是使用国内镜像加速器,这不仅能够显著提升拉取速度,还能保证在企业内网或家庭网络中更加稳定

博客 1029

【OS】AUTOSAR架构下MCAL Modules软件分区问题分析

AUTOSAR架构下MCAL Modules软件分区问题分析

qq_36056498的博客 939

EI SDK遇到的C++ STL header include problem

./model-parameters/model_metadata.h:119:3: warning: type defaults to 'int' in declaration of 'ei_dsp_config_flatten_t' [-Wimplicit-int] In file included from ./edge-impulse-sdk/dsp/spectral/spectral.hpp:27, from ./edge-impulse-sdk/classifi...

码农17年的博客 839

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

4.类与对象-下【由浅入深-C++】

由于c++的类与对象较为繁琐复杂,本文介绍类与对象部分的相关内容,该篇可以看作对上中两篇知识的递进和查漏补缺。

插花弄玉的博客 798

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++ Primer Plus 第六版 编程练习题及详细答案

C++编程练习摘要 本文档包含了一系列C++编程练习的解决方案,涵盖了基础语法、函数、类、模板等核心概念。练习分为多个章节,每章包含若干题目。 主要内容 基础练习:变量声明、输入输出、简单计算等基础语法练习 函数与结构:函数定义、参数传递、结构体使用 面向对象:类定义、继承、多态、运算符重载 模板与STL:模板函数、模板类、标准模板库应用 文件I/O:文件读写操作 异常处理:异常类设计与使用 典型示例 简单I/O:显示姓名地址、单位换算 函数应用:温度转换、字符串处理 类设计:复数类、链表类、银行模拟类 S

misterxize的博客 396

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C++编程题之新特性

1. 语言可用性的强化 1)nullptr:本质还是0,但相对于NULL提供了类型; 2)范围for; 3)auto自动推导类型; 4)迭代器遍历; 5)继承构造与委托构造; 6)override:修饰虚函数,编译器将检查基类的函数是否存在这样的虚函数; 7)final:修饰类,表示该类不可继承;修饰虚函数,表示该函数不能被重载; 8)四种类型转化 static_cast: 1)用于基础类型之间的转换,与C语言强制类型转换一样,没有安全类型检查; 2)用于上行转换(子类转父类); const_cast: 用

kevin_org 369

LeetCode *** 31. Next Permutation

题目: Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers. If such arrangement is not possible, it must rearrange it as the lowest p

treeshy的博客 259
上一篇: size_t类型
下一篇: wsl1升级到wsl2步骤
YL_python_C++_java
博客等级 码龄7年 1392粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值