Cherno的Cpp教程笔记012:C++的动态数组(std::vector)

Cherno的C++教程:从指针到游戏引擎开发实践 C++作为系统级编程语言,其核心特性如指针、内存管理和模板元编程是理解现代软件开发的基础。通过智能指针等RAII技术可以安全高效地管理资源,而STL容器和算法则提供了强大的泛型编程能力。这些特性在游戏引擎、高频交易等性能敏感场景中尤为重要。Cherno的C++教程通过可视化演示和项目实战,系统性地讲解了从基础语法到现代特性的知识体系,特别是其游戏引擎开发系列,完整展示了如何应用C++进行大型项目架构。教程强调实践导向的学习方法,建议配合VS Code或Visual Studio环境,通过代码复现和项目迭代来 阅读详情
Cherno C++ P46 C++的动态数组(std::vector) Cherno C++学习笔记 阅读详情

相关推荐

Cherno C++ P47 C++的std::vector使用优化

Cherno C++学习笔记

weixin_44452626的博客 979

cherno c++学习笔记(更新中) (最好的C++教程)B站转载的视频名称叫这个(47- )

目录57.动态数组(std::vector)特别是标准库中的 vector类,现在开始写一些 C++标准库里的东西,这个还是很重要的。标准库,在这种情况下应该叫标准模板库,本质上就是一个库,里面装满了容器,容器类型,这些容器包含特定的数据,之所以被称为标准模板库,因为它可以模板化任何东西。整个库模板化意味着容器的底层数据类型。可以说容器包含的数据类型,实际上是由你决定,所有东西由模板组成。使用模板库并不需要多了解模板,只要知道模板可以处理你提供的底层数据类型,这意味着你不需要编写自己的数据结构或类似的东西。

xu1009的博客 997

Cherno C++ P57 C++的静态数组(std array)

Cherno C++学习笔记

weixin_44452626的博客 526

C++学习笔记:vector的机制与使用优化【Cherno】

首先说一句:vector不优化的话实在是太~~慢了; vector的工作机制很简单,当我们向vector中push一个元素,且vector中的容量不够时,vector就会寻找另一块能够容纳新加入元素后的内存块【有的编译器是新内存块相对旧内存块的大小指数增长,有的是线性增长,本菜的编译器是线性增长】,然后旧内存块和新元素按照顺序copy新内存块中: 如下: #include<iostream> #include<vector> using namespace std; cla

weixin_62953519的博客 2285

Cherno C++ P65 C++的排序

Cherno C++学习笔记

weixin_44452626的博客 380

AI 自动生成商业计划书:AIGC 如何助力创业者?

在创业的早期阶段,商业计划书(Business Plan)是至关重要的。它不仅用于吸引投资者、明确发展路径,还能帮助团队对业务模式、市场定位和财务预测有清晰认知。然而,撰写一份高质量的商业计划书往往需要投入大量时间和精力。如今,AIGC(AI Generated Content,人工智能生成内容)技术正在改变这一现状。借助 AIGC,创业者可以更快速、高效地创建商业计划书,并通过 AI 进行优化和数据分析。

2401_82808034的博客 3779

【Cherno的C++视频】Vector-Making data structures in C++

【Cherno的C++视频】Vector-Making data structures in C++

AlexiaDong的博客 493

汽水音乐自动化薅羊毛教程:从零搭建稳定赚钱脚本

📖 前言:为什么要学习自动化脚本?在数字时代,时间就是金钱。汽水音乐等App通过观看广告奖励用户金币的模式,本质上是将我们的时间转化为收益。本教程将教你如何用Python自动化这个过程,让程序为你"打工",实现被动收入。通过本教程,你将学到:移动端自动化测试的核心技术Python在自动化领域的实际应用如何将重复性任务转化为自动化流程创造属于自己的"数字员工"第一章:环境准备与基础配置1.1 硬件要求Android手机一部(建议使用备用机)USB数据线。

weixin_44947827的博客 5770

C++ 动态数组

C++语言和标准库提供了两种一次分配一个对象数组的方法。C++语言定义了另一种new表达式语法,可以分配并初始化一个对象数组。标准库中包含一个名为allocator的类,允许我们将分配和初始化分离。使用allocator通常会提供更好的性能和更灵活的内存管理能力。 new和数组 为了让new分配一个对象数组,我们要在类型名之后跟一对方括号,在其中指明要分配的对象的数目。在下例中,new分配要求数量的对象并(假定分配成功后)返回指向第一个对象的指针: int get_size_new() { ret

恋恋风辰的技术博客 1万+

CUBEMX ADC 单/多通道+DMA

本文使用的是STM3F103C8T6 Cubemx进行单/多通道DMA配置。

记录学习 1402

IT资产管理(三)之GLPI资产录入

glpi 在 10 版本之后已经有自带的 glpi-agent 代理程序可自动获取服务器、电脑等的信息并进行自动录入和更新,不再依赖 10 版本之前的 fusioninventory 插件或者第三方资产统计平台 OCS Inventory 等

予挚之的博客 2980

C/C++数据结构之动态数组篇

手把手带你从初识动态数组到手写简单版本的c++vector容器

qq_63883017的博客 1万+

Box2D-Lite源码阅读笔记(2)

0.初始化函数 static void InitDemo(int index) { world.Clear(); numBodies = 0; numJoints = 0; bomb = NULL; demoIndex = index; demos[index](bodies, joints); } 在这个初始化函数中,一般会默认执行index=0的函数,这个函数就是一个示例,因为示例比较简单,所以也便于研究,示例效果如下。 就是一个方块。 进入第一个示例函数。(忽略我加的注释)

ARTELE的博客 975

Cherno C++系列笔记15——P47~P48 动态数组std::vector、动态数组vector的使用优化

文章目录1.P47 动态数组 std::vector1.1.STL标准模板库1.2.std::vector1.2.1.数组的存储1.2.2.数组的访问1.2.3.数组作为参数要用引用进行传递2.P48 动态数组 std::vector 的使用优化2.1.push_back中的复制现象2.1.1.代码分析2.1.2.结果分析2.2.优化一:reserve声明数组大小避免数组扩容产生拷贝2.3.优化二:用emplace_back直接在数组内存上构造对象 1.P47 动态数组 std::vector 参考:视频

qq_42731705的博客 1223

(计算机组成原理)第二章数据的表示和运算-第二节:数字电路基础知识

本文介绍了计算机组成原理中的逻辑门电路、多路选择器和三态门。逻辑门电路包括基本逻辑运算(与、或、非)和复合逻辑运算(与非、或非、异或、同或),这些运算通过门电路实现,并满足分配律和结合律。多路选择器(MUX)用于从多个输入信号中选择一个输出,广泛应用于数据选择、资源共享和逻辑函数实现等场景。三态门则具有三种输出状态(高电平、低电平、高阻态),常用于总线控制和信号隔离。这些元件在数字电路设计和计算机系统中具有重要作用。

快乐江湖的博客 2472

实验三、数字PID控制器的设计

由图可知,由于微分环节的作用,在曲线的起始上升段出现了一个尖锐的波峰,之后曲线也呈衰减的振荡:随着Td增加,系统的超调量增大,但曲线尖锐的起始上升阶段后响应速度减慢,可以看出Td越小。对大多数算法,缩短采样周期可使控制回路性能改善,但采样周期缩短时,频繁的采样必然会占用较多的计算工作时间,同时也会增加计算机的计算负担,而对有些变化缓慢的受控对象无需很高的采样频率即可满意地进行跟踪,过多的采样反而没有多少实际意义。随着Kp的增加,闭环系统的超调量增加,响应速度加快,控制时间加长,稳态误差减少;

m0_51738372的博客 8021

Cherno CPP学习笔记-04-高级特性

templete 允许你定义一个可以根据你的用途进行编译的模板,可以让编译器基于一套规则帮你写代码。静态链接意味着这个库会被放到你的.exe可执行文件中,或其他操作系统下的可执行文件。模板会在编译期被评估处理,所以可以利用模板实现“动态大小”的栈数组;静态链接在技术上可以产生更快的应用程序,因为它允许更多的优化发生。动态链接库是在运行时链接的,在程序运行时你可以动态装载一些链接。C++的模板对标其他语言中的“泛型”。我们能做的就是写一些宏,它将代码中的文本替换为其他东西。静态链接是在编译时发生的。

qq_45555061的博客 1193

精雕软件(JDpaint) 5.5 绿色版

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

C++学习笔记-3-Cherno系列视频

原因在于,第一次pb(push_back)时,会在main函数的栈上创建一次vertex,然后copy到vertices中(1次),第二次pb时,由于vertices初始容量为1,需要先扩容到2,再复制,而扩容需要把前面的复制到新内存地址(2次),第三次同理(3次)。unique_ptr是想要一个作用域指针时的唯一选择,这个是不能复制的(原因在于,若是复制了,则两个指针指向同一个内存地址,若其中一个消失了,会释放那部分内存,以至于另一个指针出现不可预料的错误)(比如下面的复制,为什么会复制?

ww666662的博客 1725

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++Cherno 学习笔记day12 [45]-[48] 拷贝构造函数、箭头操作符、动态数组、stdvector使用优化

也就是说,当我们想改变其中一个时,它同时改变了他们,因为它们指向同一个内存段。或者我们删除其中一个,会把两个都删除,因为指向同一个内存块。当你试图创建一个新的变量并给它分配另一个变量时,它和你正在创建的变量有相同类型。崩溃,我们真正需要做的是,分配一个新的char数组,来存储复制的字符串。而我们现在做的是复制指针,两个字符串对象完全指向相同的内存缓冲区。浅拷贝:不会去到指针的内容或者指针所指向的地方,也不会复制。当你把一个字符串赋值给一个对象时,这个对象也是一个字符串。拷贝:复制数据,复制内存。

Shirleyyy1的博客 450

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Cherno的C++教程:现代C++17/20实战与性能优化

C++作为系统级编程语言的核心价值在于其高性能与底层控制能力。现代C++17/20标准引入了模块化、协程等新特性,通过内存对齐、缓存优化等技术可显著提升程序性能。在游戏开发、实时系统等场景中,合理运用移动语义、模板元编程等特性能够优化内存管理并提高运行效率。Cherno的C++教程从实战角度出发,结合Clang编译器优化、VSCode配置技巧等工程实践,展示了如何通过结构体字段重排将缓存命中率提升60%,以及使用variant实现类型擦除使组件查询速度提高3倍。这些方法对于需要处理大规模数据或高频计算的开发

weixin_30522183的博客 325

[Cherno C++ 笔记 P41~P50]运算符重载、this、生存期、智能指针、复制与拷贝构造函数、箭头操作符、动态数组、std::vector、静态链接、动态库

[Cherno C++ 笔记 P21~P30]static,枚举,构造函数,析构函数,继承,虚函数,接口,可见性系列博客前言视频链接P41 C++运算符及其重载P42 C++的this关键字P43 C++的对象生存期(栈作用域生存期)P44 C++的智能指针P45 C++的复制与拷贝构造函数P46 C++的箭头操作符P47 C++的动态数组(std::vector)P48 C++的stdvector使用优化P49 C++中使用库(静态链接)P50 C++中使用动态库 系列博客 [Cherno C++ 笔记

qq_44525568的博客 709

Cherno CPP学习笔记-07-琐碎细节

std::unordered_map中 map[key] 这个操作具有改变(insert)map的能力,故与最好用 map.at(key)搬运别人的笔记:https://www.cnblogs.com/zhangyi1357/p/16009968.html。移动语义本质上允许我们移动对象(C++11以后引入右值引用),尽可能避免拷贝和分配内存。移动语义就像是拿一个盒子去扣住一个球,而不是复制一个球再放进盒子里。nullptr是C++语法,值为0,字节长度与平台有关。NULL是一个宏:C++中为0,C中为。

qq_45555061的博客 455

【Cherno的C++视频】Optimizing the usage of std::vector in C++

【Cherno的C++视频】Optimizing the usage of std::vector in C++

AlexiaDong的博客 152

【Cherno的C++视频】Using namespace std or std::?

【Cherno的C++视频】Using namespace std or std::?

AlexiaDong的博客 169

C++基础

C#/Java是虚拟机型的语言(托管语言),它们都没有头文件 并行堆栈是一种调试工具,用于在多线程环境中可视化每个线程的调用堆栈。它允许开发人员在单一视图中查看所有线程的执行位置,从而更方便地调试多线程应用程序ImGUI(Immediate Mode Graphical User Interface)是一个轻量级的、跨平台的、与平台无关的C++图形用户界面库,特别适合于游戏开发和其他实时应用程序,允许开发者使用纯C++代码快速创建和管理用户界面基准测试是一种性能评估方法,通过标准化的测试用例和工具,可以客观

m0_57264635的博客 947
上一篇: Cherno的Cpp教程笔记011:C++继承+虚函数
下一篇: Expected object of scalar type Long but got scalar type Float for argument
FakeOccupational
博客等级 码龄6年 2万+粉丝 1727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值