首页/新闻资讯/正文详情

从零开始的C++生活——第七讲——01

发布时间:2026/11/5 2:05:46 来源:云帆数科 栏目:资讯中心
从零开始的C++生活——第七讲——01
从这一讲开始我要引入list了在CSTL中list的实现形式是双向带头循环链表可以说是非常方便了这一篇我来讲一下list的使用。其实有了string和vector的学习基础list的使用学起来还是非常容易的首先list是一个模板类和string以及vector最大的区别是存储空间不连续并且没有reserve这一概念当存储空间不连续的时候迭代器使用就不能同往日而语。对于list的迭代器它并不支持-运算因为内存空间不连续所以你加减其实是没有意义的但是它支持--虽然从语义理解这也是没有意义的但显然是通过运算符重载使得自增自减达到我们想要的效果。对于list这种迭代器叫做双向迭代器对应的还有单项迭代器单向迭代器只能比如单向链表之前我们学的string和vector的迭代器是随机迭代器---都支持。依旧先讲构造函数和vector很像构造函数依旧是有4种分别是默认构造、n值构造、迭代器构造、拷贝构造。#define _CRT_SECURE_NO_WARNINGS 1 #include iostream #include list using namespace std; void test_init() { listint lt; listint lt1(5, 8); listint lt2(lt1.begin(), lt1.end()); listint lt3 lt2; } int main() { test_init(); return 0; }接下来是迭代器对于list迭代器的使用其实注意的点只有上面提到的不能-的问题其他的库已经帮我们实现好了但是简单剧透一下后续模拟实现的时候是很麻烦的。这是一组常规的方法由于list不涉及capacity的概念所以这里也只介绍前两个顾名思义empty是判断list是否为空size则是返回链表中元素个数当链表为空时链表中应该只有一个头节点也就是哨兵位。insert实现了三种方式分别是在指定位置前插入在指定位置前插入n个元素在指定位置前插入迭代器指向的区间void test_insert() { listint lt; listint lt1(5, 8); listint lt2(lt1.begin(), lt1.end()); listint lt3 lt2; lt.insert(lt.begin(), 1); lt3.insert(lt3.begin(), 5, 9); listint::iterator it3_s lt3.begin(); listint::iterator it3_e lt3.end(); for (int i 0; i 3; i) { it3_e--; it3_s; } listint lt4(5, 10); lt4.insert(lt4.begin(), it3_s, it3_e); }这最后一组虽然用的不多但有一些还是蛮新的简单讲一讲。首先为啥algorithm这个库里有sortlist自己还要实现一个呢因为前边说过list的迭代器是双向迭代器不支持-而sort底层是快排不论是挖坑法还是前后指针法还是霍尔都是需要在两边区间找大找小的少不了-所以list自己实现了一个。然后remove其实就是删除和erase不同的是remove是删除值erase则是删除对应位置。splice是转移的意思顾名思义它可以把一个链表的部分转移给某一个链表。merge是合并的意思就是将两个链表合并,要求是两个链表必须有序。void test_other() { listint lt; lt.push_back(1); lt.push_back(35); lt.push_back(12); lt.push_back(89); lt.push_back(13); lt.push_back(1); lt.push_back(9); listint lt2; lt2.push_back(13); lt2.push_back(9); lt2.push_back(3); lt2.push_back(77); lt2.push_back(66); lt2.push_back(11); lt2.push_back(8); //排序 lt.sort(); lt.splice(lt.begin(), lt2); listint lt1(5, 8); lt.sort(); lt.merge(lt1); }关于list的使用就讲到这里了后续将讲解模拟实现

相关推荐

1.2 I.MX6ULL C语言版LED驱动试验
1.2 I.MX6ULL C语言版LED驱动试验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 2:04:43

原生社区交友婚恋视频即时通讯双端APP源码ONE兔2.0
原生社区交友婚恋视频即时通讯双端APP源码ONE兔2.0

用户体系、实名认证与婚恋资料设计 引言 婚恋交友平台的信任基础在于真实。用户体系、实名认证与资料真实性审核,是平台安全运营的第一道防线。本文围绕用户档案、认证机制与婚恋资料设计展开讨论。 一、用户档案与婚恋资料建模 用户档案应包含:基础信息… · 2026/11/5 2:04:43

在服务器在linux上部署golang服务,设置环境变量执行编译代码
在服务器在linux上部署golang服务,设置环境变量执行编译代码

Golang 全部版本下载页 原文地址:https://golang.google.cn/dl/ 翻译说明:本文档基于 Go 官方下载页 “All releases” 的中文翻译。说明文字、提示信息与表头均已译为中文;版本号、文件名、操作系统与架构标识、文件大小及校验和按原样保留&… · 2026/11/5 2:04:43

Kafka低延迟优化实战:从原理到工程实践
Kafka低延迟优化实战:从原理到工程实践

1. Kafka低延迟优化实战指南在实时数据处理领域,Kafka作为分布式消息系统的标杆,其延迟表现直接影响着金融交易、实时监控等关键业务的响应速度。我曾负责过某证券公司的行情推送系统改造,当时将Kafka端到端延迟从200ms优化到15ms的经历让我深… · 2026/11/5 2:42:02

Ubuntu 22.04部署MySQL:从安装到优化全指南
Ubuntu 22.04部署MySQL:从安装到优化全指南

1. 为什么选择在Ubuntu 22.04上部署MySQLMySQL作为最流行的开源关系型数据库之一,在Web应用、企业系统和数据分析等领域有着广泛应用。Ubuntu 22.04 LTS作为长期支持版本,提供了稳定的软件包和五年的安全更新,是部署生产环境MySQL的理想选择。… · 2026/11/5 2:42:02

无人机集群协同路径规划:多段Dubins路径与威胁规避策略
无人机集群协同路径规划:多段Dubins路径与威胁规避策略

1. 项目背景与核心挑战无人机集群在复杂威胁环境下的协同路径规划是当前智能无人系统领域的前沿课题。当多架无人机需要在包含雷达探测区、防空火力圈、地形障碍等多样化威胁的空间中执行协同任务时,传统的单机路径规划方法往往难以满足以下需求:时空协同… · 2026/11/5 2:42:02

Solon AI v3.9架构升级:分布式调度与多模态交互优化
Solon AI v3.9架构升级:分布式调度与多模态交互优化

1. Solon AI v3.9 版本升级解析上周五深夜,团队终于把Solon AI v3.9的最后一个测试用例跑通。这个被内部称为"技能大爆炸"的版本,可能是我们今年最具突破性的更新。相比v3.8,新版本在技能组合、上下文理解和多模态交互这三个维度实… · 2026/11/5 2:42:02

QNX串口程序实战:termios原始模式、环形缓冲与帧状态机
QNX串口程序实战:termios原始模式、环形缓冲与帧状态机

简介:这是一份面向QNX嵌入式开发初学者与串口通信学习者的源码实例包,围绕实时操作系统下的串口编程展开,可用于理解设备节点访问、参数配置与数据收发流程,适合需要快速搭建串口实验并对照源码排查配置问题的自学者。压缩包为rar… · 2026/11/5 2:42:02

可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取
可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取

简介:面向开发者与Web学习者的10分钟临时邮箱源码包,围绕短时有效邮箱地址的生成、收信与到期失效流程,适合用于注册验证、下载试用等不愿暴露真实邮箱的场景,也可作为PHP邮件系统与Web服务设计的实践项目。压缩包共492个文件&… · 2026/11/5 2:41:02

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码