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

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

2026/8/21 8:20:13 阅读更多 →
EtherCAT主站SOEM -- 54 -- SOEM2.0之ec_dc.h/c分布式时钟与SYNC同步解析

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

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系统…

2026/8/21 8:20:13 阅读更多 →
机器学习之线性回归(挺全乎的,想看的可以看一看)

机器学习之线性回归(挺全乎的,想看的可以看一看)

1【理解】线性回归线性回归(Linear regression)是利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。注意事项:1 为什么叫线性模型?因为求解的w,都是w的零次幂(常数项&#xff0…

2026/8/21 8:20:13 阅读更多 →

最新新闻

独立游戏开发中AI工具合规应用与风险规避指南

独立游戏开发中AI工具合规应用与风险规避指南

最近和几个做独立游戏的朋友聊天,发现一个挺有意思的现象:大家聊起AI工具时,态度变得比以前复杂多了。以前是“哪个AI画图强?”“哪个AI写代码快?”,现在更多是“这个AI生成的内容,平台审核能过…

2026/8/21 9:02:49 阅读更多 →
AI Agent面试指南与核心技术解析

AI Agent面试指南与核心技术解析

1. 项目概述"2026智能体(AI Agent)面试&学习指南"是一份面向AI从业者的综合性资源,旨在帮助开发者系统掌握智能体技术的核心知识体系。这份指南以100道高频面试真题为线索,覆盖从基础原理到生产级架构的全栈内容&am…

2026/8/21 9:02:49 阅读更多 →
告别弹窗广告!7-Zip美化增强版:开源免费的终极解压方案

告别弹窗广告!7-Zip美化增强版:开源免费的终极解压方案

你有没有遇到过这种情况:电脑里装了三四个解压缩软件,每次右键菜单都长得不一样,有的弹广告,有的要会员,有的解压到一半报错,最后还得老老实实装回那个界面丑、但从不掉链子的老家伙——7-Zip。是的&#x…

2026/8/21 9:02:48 阅读更多 →
PCA主成分分析实战:从sklearn参数详解到业务洞察

PCA主成分分析实战:从sklearn参数详解到业务洞察

1. 项目概述:从数据降维到特征洞察主成分分析,这四个字在数据科学和机器学习领域出现的频率,可能仅次于线性回归。但很多朋友在初次接触时,总觉得它像是一个“黑箱”:丢进去一堆高维数据,跑出来几个叫“主成…

2026/8/21 9:02:48 阅读更多 →
AI智能体循环架构:从感知-思考-行动到自主任务执行

AI智能体循环架构:从感知-思考-行动到自主任务执行

在探索AI智能体开发的过程中,你是否遇到过这样的困境:智能体只能被动响应单次请求,无法记住上下文,更别提自主规划、执行多步任务了?这背后缺失的,正是一个能让智能体“思考”和“行动”起来的关键机制——…

2026/8/21 9:02:48 阅读更多 →
手机存储扩容新思路|四款主流云盘工具功能实测与对比

手机存储扩容新思路|四款主流云盘工具功能实测与对比

一、前言当下手机高清影像、原创素材、办公文档与社交缓存数据持续增长,设备自带的本地存储空间很容易出现容量不足的情况,影响日常存储与使用体验。更换大容量设备、硬件拆机扩容存在成本高、硬件改动风险大的问题,云端软件扩容凭借无需改动…

2026/8/21 9:01:48 阅读更多 →

日新闻

机场边检旅客定位系统国产化白皮书:算法、硬件、底座平台全程自主

机场边检旅客定位系统国产化白皮书:算法、硬件、底座平台全程自主

前言随着国家数字基础设施信创替代、关键技术自主可控战略持续深化,口岸智慧安防、边检智能管控领域正全面进入国产化、自主化、安全可控升级周期。当前国内机场边检旅客识别与定位体系长期依赖国外商用视觉算法、进口成像硬件、闭源通用计算平台,存在核…

2026/8/21 0:00:42 阅读更多 →
别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱

别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱

别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱当下数字化建设浪潮中,很多项目将三维可视化、视频贴图叠加的数字孪生等同于空间智能。传统数字孪生更多停留在三维场景复刻,擅长把物理世界“画出来、展示出来”,…

2026/8/21 0:00:42 阅读更多 →
105、车载温度范围-40°C到85°C的影像质量一致性——ISP参数温漂补偿与产线标定策略

105、车载温度范围-40°C到85°C的影像质量一致性——ISP参数温漂补偿与产线标定策略

105、车载温度范围-40C到85C的影像质量一致性——ISP参数温漂补偿与产线标定策略 去年冬天在北方某车厂做A样评审,凌晨四点的黑河试验场,零下三十三度。客户拿了一台冷启动的车,中控屏上倒车影像全是雪花噪点,暗部细节直接糊成一片。我第一反应是sensor温度没上来,暗电流…

2026/8/21 0:00:42 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/21 0:02:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

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

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

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/20 6:11:08 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/20 21:46:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/21 0:14:22 阅读更多 →