C++的二维vector和C的二维数组学习
C的二维vector和C的二维数组学习参考了http://blog.csdn.net/zhuqinglu/article/details/1805050可通过下列代码直接创建m*n的二维vectorvectorvector int ivec(m ,vectorint(n)); //m*n的二维vector动态创建m*n的二维vector方法一vectorvector int ivec;ivec.resize(m);for(int i0;im;i) ivec[i].resize(n);方法二vectorvector int ivec;ivec.resize(m,vectorint(n));动态创建二维数组a[m][n]C语言版创建代码#includemalloc.h int **a(int **)malloc(m*sizeof(int *)); for(int i0;im;i) a[i](int *)malloc(n*sizeof(int));释放代码for (i0;im;i) { free(data[i]); } free(data);C版创建代码:int **anew int*[m]; for(int i0;im;i) a[i]new int[n];释放代码for(int i 0; i ! m; i) { delete[] p[i]; } delete[] p;初始化二维数组int a[2][2] {{1,2},{3,4}};初始化二维vector:如果全初始化为0vectorvector int ivec(m ,vectorint(n,0)); //m*n的二维vector所有元素为0也可以用vectorvectorint A; A.resize(m, vectorint(n, 0));注意上例中n固定。但二维vector的第二维的size()并不一定要是常数如下例中的三个vector组成的二维vector其大小分别为123。这一点跟C的二维数组不一样。vectorvectorint vecSet; for(int i 1; i 3; i) vecSet.push_back(vectorint(i,0));如果初始化为不同值vectorvectorint a {{1,2}, {3,4}};注意与上面的C的二维数组区别这里a的后面加不加号都可以。如果C的class里面定义了vector可以在class的constructor里面初始化比如class Myclass { public: Myclass(int m_size): v1(my_size,0), v2(m_size, 0){} ... private: vectorint v1, v2; }如果想遍历二维vector(按vector一个一个来)可以用C 11的auto比如#include iostream #include vector using namespace std; int main() { vectorvectorint v {{1,2}, {3,4}}; for (const auto inner : v) { for (const auto item : inner) { cout item ; } } cout endl; return 0; }定义一个二维数组第一维有26个但第二维不定。vectorvectorint vecs(26, vectorint());三维vector怎么定义呢 一个例子如下vectorvectorvectorbool dp (n, vectorvectorbool (n, vectorbool(n 1, false)));另一个三维vector的初始化例子:vectorvectorvectorint dp(len 1, vectorvectorint(k 1, vectorint(target 1, 0)));二维vector的初始化如下:假设已经有vectorvectorbool board;vectorvectorbool mask(board.size(), vectorbool(board[0].size(), true));下面是一些关于C/C 二维数组初始化的资料引用自C语言二维数组的定义、初始化、赋值二维数组的初始化赋值二维数组的初始化可以按行分段赋值也可按行连续赋值。例如对于数组 a[5][3]按行分段赋值应该写作int a[5][3]{ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };按行连续赋值应该写作int a[5][3]{80, 75, 92, 61, 65, 71, 59, 63, 70, 85, 87, 90, 76, 77, 85};这两种赋初值的结果是完全相同的。对于二维数组的初始化还要注意以下几点1) 可以只对部分元素赋值未赋值的元素自动取“零”值。例如int a[3][3] {{1}, {2}, {3}};是对每一行的第一列元素赋值未赋值的元素的值为 0。赋值后各元素的值为1 0 02 0 03 0 0再如int a[3][3] {{0,1}, {0,0,2}, {3}};赋值后各元素的值为0 1 00 0 23 0 02) 如果对全部元素赋值那么第一维的长度可以不给出。例如int a[3][3] {1, 2, 3, 4, 5, 6, 7, 8, 9};可以写为int a[][3] {1, 2, 3, 4, 5, 6, 7, 8, 9};3) 二维数组可以看作是由一维数组嵌套而成的如果一个数组的每个元素又是一个数组那么它就是二维数组。当然前提是各个元素的类型必须相同。根据这样的分析一个二维数组也可以分解为多个一维数组C语言允许这种分解。例如二维数组a[3][4]可分解为三个一维数组它们的数组名分别为 a[0]、a[1]、a[2]。这三个一维数组可以直接拿来使用。这三个一维数组都有 4 个元素比如一维数组 a[0] 的元素为 a[0][0]、a[0][1]、a[0][2]、a[0][3]。如果要返回一个二维空vector可以用return vectorvectorint();好像也可以用return {{}};下面内容参考链接https://blog.csdn.net/shizheng_Li/article/details/105862560圆括号vectorint v(n)圆括号是构造函数表示1个容量为n的vector方括号vectorint v[n] :表示n个vector v 二维数组相当于 vectorvectorint v(n)二维数组举例vector v(10) 表示 一个容量10的vectorvector v[10] 表示10个容量不确定的vector组成的二维数组//////////////////二维数组斜向遍历假设二维数组的大小 \(n 4\)当 \(l\) 从 2 递增到 4 时遍历的区间 \([i, j]\) 顺序如下\(l 2\)长度为 2 的斜线即紧邻主对角线的上方\(i 0 \rightarrow [0, 1]\)\(i 1 \rightarrow [1, 2]\)\(i 2 \rightarrow [2, 3]\)\(l 3\)长度为 3 的斜线\(i 0 \rightarrow [0, 2]\)\(i 1 \rightarrow [1, 3]\)\(l 4\)长度为 4 的斜线\(i 0 \rightarrow [0, 3]\)每次外层循环 \(l\) 增加时实际上是在遍历平行于主对角线的右上方的另一条斜线。// 斜着遍历数组for (let l 2; l n; l) {for (let i 0; i n - l; i) {let j l i - 1;// 计算 dp[i][j]}}

相关新闻

VC载具框架:游戏模组开发中的车辆系统标准化解决方案

VC载具框架:游戏模组开发中的车辆系统标准化解决方案

这次我们来看一个游戏模组开发领域的技术项目——VC载具框架。这是一个专门为游戏开发者设计的车辆系统模组框架,重点解决游戏中载具操作和车内系统的标准化实现问题。 从项目名称可以看出,VC载具框架主要包含两大核心模块:车辆操作系统和车内交互系统。车辆操作系统负责处…

2026/7/25 1:19:27阅读更多 →
VC载具框架:游戏开发中的车辆系统标准化解决方案

VC载具框架:游戏开发中的车辆系统标准化解决方案

这次我们来看一个游戏开发领域的技术框架——VC载具框架。这个由KDC-ModGroup团队开发的框架专注于为游戏提供完整的车辆操作和车内系统解决方案,特别适合需要复杂载具交互的开放世界或模拟类游戏项目。 VC载具框架的核心价值在于它提供了一套标准化的车辆控制系统,从基础驾…

2026/7/25 1:19:27阅读更多 →
DeepSeek    LeetCode 3710. 最大划分因子 TypeScript实现

DeepSeek LeetCode 3710. 最大划分因子 TypeScript实现

以下是 LeetCode 3710. 最大划分因子 的 TypeScript 实现&#xff0c;采用 二分答案 二分图判定&#xff08;DFS 染色法&#xff09;&#xff1a;typescript function maxPartitionFactor(points: number[][]): number {const n points.length;if (n < 2) return 0;// 1. …

2026/7/25 1:17:26阅读更多 →
AI角色设计:从文字描述到精准视觉生成的技术解析

AI角色设计:从文字描述到精准视觉生成的技术解析

1. 项目背景与核心价值去年帮朋友的小说做封面设计时&#xff0c;我发现一个行业痛点&#xff1a;文字工作者往往对角色形象有清晰的"脑内人设"&#xff0c;但要将这种抽象想象转化为具象视觉却困难重重。传统约稿方式需要反复沟通修改&#xff0c;成本高耗时长。而通…

2026/7/25 2:41:43阅读更多 →
终极VLC美化指南:5款VeLoCity皮肤包快速安装与个性化设置方法

终极VLC美化指南:5款VeLoCity皮肤包快速安装与个性化设置方法

终极VLC美化指南&#xff1a;5款VeLoCity皮肤包快速安装与个性化设置方法 【免费下载链接】VeLoCity-Skin-for-VLC Castom skin for VLC Player 项目地址: https://gitcode.com/gh_mirrors/ve/VeLoCity-Skin-for-VLC 想要为你的VLC播放器打造与众不同的视觉体验吗&#…

2026/7/25 2:41:43阅读更多 →
AI记忆体系:解决大模型健忘症的三层架构设计

AI记忆体系:解决大模型健忘症的三层架构设计

1. 项目概述&#xff1a;当AI学会"记住"会发生什么&#xff1f;在ChatGPT等大模型席卷全球的当下&#xff0c;一个根本性缺陷逐渐浮出水面——这些看似聪明的AI实际上患有严重的"健忘症"。每次对话都像初次见面&#xff0c;用户需要反复交代背景信息&#…

2026/7/25 2:41:43阅读更多 →
自学网络安全(黑客技术)完全指南

自学网络安全(黑客技术)完全指南

前言&#xff1a;先弄懂“网络安全”与“黑客” 在你开始之前&#xff0c;请先建立起一个正确的认知&#xff1a;网络安全绝不是只会用几个工具去搞破坏&#xff0c;而是一套完整的防护与对抗体系。 从攻防视角看&#xff0c;网络安全可以划分为攻击技术与防御技术两大方向。…

2026/7/25 2:41:43阅读更多 →
大语言模型种群理论:从个体学习到专家协同的认知革命

大语言模型种群理论:从个体学习到专家协同的认知革命

为什么我们总觉得大语言模型&#xff08;LLMs&#xff09;应该像人类一样学习&#xff1f;这个认知误区可能正在阻碍我们真正理解AI的能力边界。最近一个颠覆性的观点在AI研究圈引发热议&#xff1a;LLMs根本不是"一个大脑"&#xff0c;而是"一个种群"。这…

2026/7/25 2:41:43阅读更多 →
Web 安全之 Git 泄露:原理剖析 + CTFHub Log/Stash/Index 全题型解法

Web 安全之 Git 泄露:原理剖析 + CTFHub Log/Stash/Index 全题型解法

Web 安全之 Git 泄露&#xff1a;原理剖析 CTFHub Log/Stash/Index 全题型解法一、漏洞简介二、漏洞底层原理2.1 .git核心目录结构与CTF考点对应2.2 漏洞形成根本原因2.3 补充CTF特殊情况提示&#xff08;区别于真实渗透&#xff09;三、漏洞检测方法3.1 手动验证方法3.2 自动…

2026/7/25 2:39:42阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

2026/7/25 1:01:14阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP&#xff08;轻量级目录访问协议&#xff09;作为企业级身份认证的黄金标准&#xff0c;已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时&#xff0c;发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 1:01:14阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”&#xff0c;而是以可解释、可审计、可迭代的方式&#xff0c;赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/25 1:01:14阅读更多 →
突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制&#xff1a;kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档&#xff0c;但是相关网站浏览体验不好各种广告&#xff0c;各种登录验证&#xff0c;需要很多步骤才能下载文档&#xff0c;该脚本就是为了解决您的…

2026/7/25 0:01:16阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述&#xff1a;为什么我们要“手撕”string类&#xff1f;在C的学习道路上&#xff0c;尤其是从C语言过渡到C的“初阶”阶段&#xff0c;string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了&#xff0c;、find、substr&#xff0c;几个操作符和函数…

2026/7/25 0:01:16阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看&#xff0c;“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具&#xff0c;而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源&#xff0c;比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:01:16阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/24 23:01:03阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/24 19:00:40阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/24 19:00:40阅读更多 →