C++ vector二维数组初始化 C++ 嵌套vector定义与赋值【数组】
发布时间 - 2026-02-02 00:00:00 点击率:次vector初始化常见错误是误写vector arr(3,5),正确应为vector arr(3,vector(5));嵌套vector非连续内存,高频计算宜用一维模拟;拷贝为深拷贝,移动后原对象仅size()可用。
vector> 初始化时常见错误
直接写 vector 会编译失败——vector 构造函数不接受这种参数组合。第二个参数必须是同类型的对象,而 5 是 int,不是 vector。
正确做法是显式构造内层 vector:
-
vector:创建 3 行、每行 5 个> arr(3, vector (5)) 0的二维数组 -
vector:每行 5 个> arr(3, vector (5, 7)) 7 - 如果行、列尺寸在运行时才确定,不能用初始化列表,得先声明再 resize:
vector> arr; arr.resize(m, vector (n, 0));
用 initializer_list 初始化嵌套 vector(C++11 起)
适合小规模、编译期已知数据的场景,比如测试用例或常量表。语法直观但性能不优,别在循环里反复用。
示例:
vector> mat = { {1, 2, 3}, {4, 5}, {6, 7, 8, 9} };
注意:mat[1] 长度是 2,mat[2] 是 4 —— 它不是严格矩形,而是“vector of vectors”,每行可独立变长。
- 若需要严格矩形且初始化全为 0,仍推荐
vector>(m, vector (n)) - 混合使用 initializer_list 和默认值会报错:
{ {1,2}, vector不合法,类型不一致(3) }
避免 vector> 的性能陷阱
它在内存中不是连续布局,每行 vector 单独分配堆内存,缓存不友好,访问速度远低于一维模拟二维(如 vector)。
- 高频数值计算(如图像处理、矩阵运算)优先用一维 + 手动索引
:
data[i * cols + j] - 若必须用嵌套 vector,确保外层 size 固定后不再 push_back,否则可能触发多次内存重分配
- 初始化后调用
shrink_to_fit()对每行没实际意义,因为vector内部 capacity 通常已紧凑
赋值与深拷贝行为
vector 的拷贝是深拷贝:新对象拥有完全独立的数据副本,修改副本不影响原对象。
但要注意引用语义误用:
-
auto& row = mat[0];→ 修改row会改mat[0] -
auto row = mat[0];→ 这是拷贝,后续改row不影响mat - 想实现“视图”或共享数据?该用
span(C++20)或裸指针+长度,而不是靠 vector 拷贝>
真正容易被忽略的是:嵌套 vector 的移动语义虽高效,但移动后原对象处于有效但未定义状态,不能再读取其 size() 以外的成员——这点比普通 vector 更易出错。
# c++
# 常量
# 构造函数
# auto
# int
# 循环
# 指针
# 堆
# 对象
# 的是
# 这是
# 第二个
# 它在
# 不能用
# 报错
# 但要
# 时才
# 不接受
# 图像处理
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251811 】
【
AI营销90571 】
相关推荐:
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
佛山网站制作系统,佛山企业变更地址网上办理步骤?
详解MySQL数据库的安装与密码配置
如何在橙子建站中快速调整背景颜色?
,交易猫的商品怎么发布到网站上去?
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
如何快速搭建自助建站会员专属系统?
JS中对数组元素进行增删改移的方法总结
,网页ppt怎么弄成自己的ppt?
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
Internet Explorer官网直接进入 IE浏览器在线体验版网址
详解Android中Activity的四大启动模式实验简述
javascript中的try catch异常捕获机制用法分析
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
Thinkphp 中 distinct 的用法解析
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
网站制作软件免费下载安装,有哪些免费下载的软件网站?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
Windows Hello人脸识别突然无法使用
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何基于云服务器快速搭建网站及云盘系统?
C#如何调用原生C++ COM对象详解
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
JavaScript Ajax实现异步通信
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
Python文本处理实践_日志清洗解析【指导】
简历没回改:利用AI润色让你的文字更专业
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
如何在IIS中新建站点并配置端口与IP地址?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
Laravel如何使用withoutEvents方法临时禁用模型事件
如何在云主机上快速搭建多站点网站?
Linux系统命令中tree命令详解
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
php结合redis实现高并发下的抢购、秒杀功能的实例
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
Laravel观察者模式如何使用_Laravel Model Observer配置
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
C语言设计一个闪闪的圣诞树
如何在服务器上配置二级域名建站?


