list 2

发布时间:2026/8/21 8:20:07

list 2
指针字节数只看系统架构和模板 T 无关32 位 x86 平台所有指针都是 4 字节64 位 x64 平台VS 默认现在都是 64 位所有指针都是 8 字节继续在 类模板list_iterator完成重载1后置 --下图用到了tmp(*this)拷贝构造但是类模板list_iterator没写这里用的是浅拷贝的但是不影响要的就是指向同一块空间所以析构也不需要写2.迭代器模拟指针的行为所以要将—重载假如有一个类AA将AA当作T传入并测试如下黑圈代码有对象AA data,其中存有两值_a11,_a21运行失败为什么库里面的operator不支持自己定义的类法1 修改输出方式.法2. 重载—,_node迭代器内部成员是list_nodeT*指针指向链表节点。_node-_data节点内部的实体对象T。_node-_data取这个T对象的地址返回T*指针。使用是这样写运算符重载可以显示调用现在加入下图函数模板print_container并打印在测试函数test_list1()中调用它会显示函数模板print_container中范围for不支持再将for循环单独拿出来加入到It对象的函数内测试如下图。将上图横线代码屏蔽如下右图运行下面左图代码验证for循环单独拿出来加入到It对象的函数内能否运行成功。发现运行成功。为什么print_container内的范围for不支持单独拿出来的就支持范围for底层是迭代器。print_container形参是const修饰表示这个函数只读不修改容器所以迭代器类型是常量迭代器 。其范围for单独拿出来lt就是个普通容器其迭代器当然也是普通迭代器。所以要实现const迭代器因为所以用右图第二种思考迭代其如何让其指向内容不能修改?我们在类模板list_iterator中用operator operator-来获取数据所以在这两个函数上做文章修改为下图即可支持print_container内的范围for所以我们的类模板list_iterator也要有两个版本一个普通list_iterator一个list_const_iterator。在类模板list中补充list_const_iterator中其他与普通list_iterator一样只有operator operator-变为上上图将类模板list再补充beginend() 的const版本普通对象和const对象都可调用const成员函数注意将之前print_container内迭代器名称修改过来如下图红色横线。print_container内的范围for不支持和单独拿出来就支持两者原理如下两图。运行程序此时运行的是测试函数test_list1()如下下图。print_containerhan函数运行代码此时已注释掉。发现能运行成功但仔细分析上上图 *返回的是const T 不能再改变返回值所以*it 10错误 但为什么运行成功因为模板是按需实例化实例化调用模板之后才会严谨的走代码逻辑不实例化只会找出基础语法错误比如少括号少写我们现在只运行测试函数test_list1()如上上图并没有调用函数模板print_containerhan。函数模板print_containerhan并没有实例化。现在运行函数模板print_containerhan则报错将*it 10注释掉运行成功·测试迭代器失效原来迭代器it绑定的节点值为 1本身没有被移动、没有被销毁迭代器仍然有效依然指向原来那个节点。insert无迭代器失效问题因为其内存不连续erase呢?以删除所有偶数为例在上面代码后续写以下代码it还是指向被删节点it已经是野指针不能继续在下图文件包上assert.herase中有文件否则报错解决办法用将erase后的返回值是下一个节点的迭代器将it更新。当然我们自己的erase的返回值下一个节点的迭代器还没有该功能。实现erase的返回值是下一个节点的迭代器以下打印 成功将自己的insert没有返回插入节点的迭代器与库中的insert返回插入节点的迭代器功能同步实现析构函数实现拷贝构造默认生成的还是浅拷贝得自己写深拷贝实现如下行吗不行因为push_back调用的前提是得有头节点已经自己指向了自己这里的头节点是this指针指向的It2的头节点虽然已经给头节点分配了内存但是其中是乱码并没有自己指向自己所以判空并创建链表运算符重载 赋值 默认生成浅拷贝先自己实现一个交换函数调用std::swap函数模板再在赋值函数中复用它库中初始化可以一次性赋多个值如何做到1.首先了解 std::initializer_listvalue_type ilinitializer_listTC11 新增的模板轻量容器类专门接收{ ... }大括号初始化列表value_type模板参数。对于listintvalue_type就是int代表列表里面存放的元素类型il参数名字你可以随便改比如叫initstd::initializer_listvalue_type il用法如下2.该模类同样有成员函数函数作用(constructor)构造函数用来创建initializer_list对象一般编译器自动调用程序员很少手写调用size()返回元素个数il.size()begin()成员版返回指向第一个元素的迭代器const T*end()成员版返回末尾后一位迭代器const T*非成员函数重载begin(initializer_list)end(initializer_list)3.它被当作构造函数的形参配置器不用管该构造函数就是用来支持list{val1,val2,val3}花括号初始化模拟完成可以支持一次性传多个数据的的单参数构造函数有两种用法 结果一样语法过程不一样1️⃣ lt0( {1,2,3,4,5,6} ); 直接构造圆括号初始化{1,2,3,4,5,6}被编译器生成临时std::initializer_listint对象直接作为实参传给构造函数。语法直接初始化 流程直接调用 list 接收initializer_list的构造函数在 lt0 的内存上就地构造对象。2️⃣ lt1 {1,2,3,4,5,6}; 拷贝初始化隐式转换不是赋值运算符 这里不会调用 operator 赋值重载为什么叫隐式转换隐式 编译器偷偷帮你做类型转换代码上你看不见转换的代码没有写任何强制转换语法。你写的源码listint lt1 {1,2,3,4,5,6}表面右边只是一堆数字大括号{1,2,3,4,5,6}它本身并不是 listint类型。编译器在你看不见的地方完成两步转换把{1,2,3,4,5,6} → 生成std::initializer_listint临时对象再拿这个initializer_listint调用 list 的构造函数隐式构造出一个临时的listint对象。你源代码没有写listint({1,2,3,4,5,6})但是编译器自动帮你补上了这就叫隐式类型转换。流程直接调用 list 接收initializer_list的构造函数在 lt0 的内存上就地构造对象。还可以这样用所以还可以这样传函数参数当函数参数为链表时可以如下图最后一行代码一样传参。原因如下图

相关新闻

AI人工智能--DeepSeek Harness

AI人工智能--DeepSeek Harness

2026/8/21 8:20:07

DeepSeek Harness DeepSeek Harness可以 写代码、读写文件、执行 Shell 命令、进行多文件重构等。 DeepSeek Harness (简称 dsh) 是深度求索(DeepSeek AI)开源的本地优先、基于插件架构的 Agent 运行/开发环境(Coding Agent Harness&#xff…

EtherCAT主站SOEM -- 54 -- SOEM2.0之ec_dc.h/c分布式时钟与SYNC同步解析

EtherCAT主站SOEM -- 54 -- SOEM2.0之ec_dc.h/c分布式时钟与SYNC同步解析

2026/8/21 8:20:07

EtherCAT主站SOEM -- 54 -- SOEM2.0之ec_dc.h/c分布式时钟与SYNC同步解析 0 Win QT & VS和Ubuntu QT & STM32F767 移植SOEM 0.0 移植环境预览: 0.1 Ubuntu18.04系统QT-SOEM博客、视频欣赏及源代码链接 0.2 STM32F767-SOEM 博客、视频欣赏及源代码链接 0.3 Win11/10系统…

CMYK是一种减色颜色模型,四个字母分别代表青色(Cyan)、品红色(Magenta)、黄色(Yellow)、黑色(Key)

CMYK是一种减色颜色模型,四个字母分别代表青色(Cyan)、品红色(Magenta)、黄色(Yellow)、黑色(Key)

2026/8/21 8:10:07

答案:B 解析:CMYK是一种减色颜色模型,四个字母分别代表青色(Cyan)、品红色(Magenta)、黄色(Yellow)、黑色(Key)。这类模型依靠反射光线呈现色彩&a…

Anthropic IPO 最快本月底公开招股书:追赶 SpaceX 862 亿纪录的\“史上最大 AI IPO\“,3.6 万字拆解估值与隐忧

Anthropic IPO 最快本月底公开招股书:追赶 SpaceX 862 亿纪录的\“史上最大 AI IPO\“,3.6 万字拆解估值与隐忧

2026/8/21 9:20:10

摘要彭博社与财联社北京时间 8/21 凌晨同时披露,Anthropic 正准备最快 8 月底公开提交 IPO 招股书,IPO 规模目标是至少追平 SpaceX 今年 6 月创下的 750 亿美元(连同超额配售权 862 亿)纪录。Q2 营收 115 亿美元(同比 …

Alipay-PIBench:首个真实支付集成评测基准,推动AI编程助手迈向工程实用化

Alipay-PIBench:首个真实支付集成评测基准,推动AI编程助手迈向工程实用化

2026/8/21 9:20:10

1. 项目概述:为什么我们需要一个“真实”的支付集成评测基准? 如果你是一名开发者,或者正在研究如何让AI编程助手(Coding Agents)变得更实用,那你肯定遇到过这样的场景:你让AI帮你写一段代码&am…

选对AI论文工具告别焦虑夜!人气工具盘点 + 选前必看避坑

选对AI论文工具告别焦虑夜!人气工具盘点 + 选前必看避坑

2026/8/21 9:20:10

每到毕业季,论文就成了不少同学的“噩梦”:选题没方向、写初稿卡得死死的、格式改来改去烦死人、查重标红一片心凉半截、AIGC检测风险还高得吓人,通宵熬夜成了家常便饭。很多人以为AI工具就是万能神器,一键就能搞定整篇论文&#…

ROS自主导航实战:从定位、建图到路径规划的全链路部署与调试指南

ROS自主导航实战:从定位、建图到路径规划的全链路部署与调试指南

2026/8/21 9:20:10

1. 先搞清楚ROS自主导航到底要解决哪几个核心问题 如果你刚接触ROS机器人,看到“自主导航”这个词,可能会觉得它是个黑盒子,输入目标点,机器人就能自己跑过去。但实际落地时,你会发现它是由三个环环相扣、又可能各自出…

Graph-GRPO:分层解耦与相对优化,破解多智能体拓扑学习训练不稳定性难题

Graph-GRPO:分层解耦与相对优化,破解多智能体拓扑学习训练不稳定性难题

2026/8/21 9:20:10

1. 从“各自为战”到“协同进化”:多智能体拓扑学习的核心挑战在强化学习领域,多智能体系统(Multi-Agent System, MAS)的魅力在于其模拟了现实世界中复杂的社会协作与竞争。想象一下,一个机器人足球队要赢得比赛&#…

2026年Java大厂面试备战指南与核心技术解析

2026年Java大厂面试备战指南与核心技术解析

2026/8/21 9:10:10

1. 2026年Java大厂面试备战全景指南作为经历过三次大厂面试轮回的老兵,我清楚地记得2023年那次蚂蚁金服面试中,面试官突然要求在白板上手写红黑树插入逻辑时的窒息感。如今站在2025年的技术风口回望,Java技术栈的面试维度已经发生了显著进化。…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/19 3:36:59

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/20 21:07:35

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/19 8:02:16

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

091、主从同步控制策略

091、主从同步控制策略

2026/8/21 0:09:47

091、主从同步控制策略:从一次多轴抖动事故说起 去年调试一台四轴龙门平台,Z轴和两个X轴做主从同步。电机选的是台达A2系列,驱动器工作在位置模式,主站发脉冲指令,从站硬线跟随。调试时发现一个诡异现象:当主站以500rpm匀速运行时,从站电流波形每隔几秒会出现一次毛刺,…

向量检索实验失败后该查什么

向量检索实验失败后该查什么

2026/8/21 0:09:47

向量检索实验失败后该查什么 这篇要解决什么 向量检索实验失败后该查什么讨论的是一个可复查的工程问题。向量检索实验失败后该查什么不拿未经记录的事故、跑分或成本当作论据;判断需要回到当前项目的输入、版本和运行条件。 从边界开始 处理向量检索实验失败后该查…

提示词发布过程中的止损边界

提示词发布过程中的止损边界

2026/8/21 0:09:47

提示词发布过程中的止损边界 这篇要解决什么 提示词发布过程中的止损边界讨论的是一个可复查的工程问题。提示词发布过程中的止损边界不拿未经记录的事故、跑分或成本当作论据;判断需要回到当前项目的输入、版本和运行条件。 从边界开始 处理提示词发布过程中的止损…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…