当前位置: 首页 > news >正文

c++的学习之路:14、list(1)

本章讲一下如何使用list,代码在文章末

目录

一、list介绍

二、增

三、删

四、查和改

五、交换

六、代码


一、list介绍

首先还是看一看官方文档的介绍如下图,如下方五点:

1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。

2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。

3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。

4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率 更好。

5. 与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如:要访问list 的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间 开销;list还需要一些额外的空间,以保存每个节点的相关联信息(对于存储类型较小元素的大list来说这 可能是一个重要的因素)

在图二就是一些参数,可以明显看到没有【】,因为list就是相当于一个带头双向链表,参数和之前学习的差不多,就不详细讲了。

二、增

如下方代码就是就创建了一个链表为l1和l2进行尾插和头插然后在利用for进行打印。

void Test1()
{
    list<int> l1;
    l1.push_back(1);
    l1.push_back(2);
    l1.push_back(3);
    l1.push_back(4);
    list<int> l2;
    l2.push_front(1);
    l2.push_front(2);
    l2.push_front(3);
    l2.push_front(4);
    for (auto li : l1)
    {
        cout << li << ' ';
    }
    cout << endl;
    for (auto li : l2)
    {
        cout << li << ' ';
    }
    cout << endl;
}

三、删

如下就是先尾删打印在进行头删打印,代码和测试如下。

void Test2()
{
    list<int> l1;
    l1.push_back(1);
    l1.push_back(2);
    l1.push_back(3);
    l1.push_back(4);
    l1.push_back(5);
    l1.push_back(6);
    for (auto li : l1)
    {
        cout << li << ' ';
    }
    cout << endl;
    l1.pop_back();
    l1.pop_back();
    for (auto li : l1)
    {
        cout << li << ' ';
    }
    cout << endl;
    l1.pop_front();
    l1.pop_front();
    for (auto li : l1)
    {
        cout << li << ' ';
    }
    cout << endl;
}
 

四、查和改

下方代码就是利用find函数进行插在,找到了3然后返回位置给pos在这个地方进行插入30,然后在查找30再把这个删掉。

void Test3()
{
    list<int> l1;
    l1.push_back(1);
    l1.push_back(2);
    l1.push_back(3);
    l1.push_back(4);
    l1.push_back(5);
    l1.push_back(6);
    for (auto li : l1)
    {
        cout << li << ' ';
    }
    cout << endl;
    auto pos = find(l1.begin(),l1.end(),3);
    l1.insert(pos, 30);
    for (auto li : l1)
    {
        cout << li << ' ';
    }
    cout << endl;
    pos= find(l1.begin(), l1.end(), 30);
    l1.erase(pos);
    for (auto li : l1)
    {
        cout << li << ' ';
    }
    cout << endl;
}
 

五、交换

交换两个链表的数值,这个原理就是交换头指针,如下方代码所示。

void Test4()
{
    list<int> l1;
    l1.push_back(1);
    l1.push_back(2);
    l1.push_back(3);
    l1.push_back(4);
    l1.push_back(5);
    l1.push_back(6);
    list<int> l2;
    l2.push_back(10);
    l2.push_back(20);
    l2.push_back(30);
    l2.push_back(40);
    l2.push_back(50);
    l2.push_back(60);
    for (auto li : l1)
    {
        cout << li << ' ';
    }
    cout << endl;
    for (auto li : l2)
    {
        cout << li << ' ';
    }
    cout << endl;
    l1.swap(l2);
    for (auto li : l1)
    {
        cout << li << ' ';
    }
    cout << endl;
    for (auto li : l2)
    {
        cout << li << ' ';
    }
    cout << endl;

六、代码

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <list>
using namespace std;void Test1()
{list<int> l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);list<int> l2;l2.push_front(1);l2.push_front(2);l2.push_front(3);l2.push_front(4);for (auto li : l1){cout << li << ' ';}cout << endl;for (auto li : l2){cout << li << ' ';}cout << endl;
}void Test2()
{list<int> l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);l1.push_back(5);l1.push_back(6);for (auto li : l1){cout << li << ' ';}cout << endl;l1.pop_back();l1.pop_back();for (auto li : l1){cout << li << ' ';}cout << endl;l1.pop_front();l1.pop_front();for (auto li : l1){cout << li << ' ';}cout << endl;
}void Test3()
{list<int> l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);l1.push_back(5);l1.push_back(6);for (auto li : l1){cout << li << ' ';}cout << endl;auto pos = find(l1.begin(),l1.end(),3);l1.insert(pos, 30);for (auto li : l1){cout << li << ' ';}cout << endl;pos= find(l1.begin(), l1.end(), 30);l1.erase(pos);for (auto li : l1){cout << li << ' ';}cout << endl;
}void Test4()
{list<int> l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);l1.push_back(5);l1.push_back(6);list<int> l2;l2.push_back(10);l2.push_back(20);l2.push_back(30);l2.push_back(40);l2.push_back(50);l2.push_back(60);for (auto li : l1){cout << li << ' ';}cout << endl;for (auto li : l2){cout << li << ' ';}cout << endl;l1.swap(l2);for (auto li : l1){cout << li << ' ';}cout << endl;for (auto li : l2){cout << li << ' ';}cout << endl;
}int main()
{Test4();
}

相关文章:

c++的学习之路:14、list(1)

本章讲一下如何使用list&#xff0c;代码在文章末 目录 一、list介绍 二、增 三、删 四、查和改 五、交换 六、代码 一、list介绍 首先还是看一看官方文档的介绍如下图&#xff0c;如下方五点&#xff1a; 1. list是可以在常数范围内在任意位置进行插入和删除的序列式…...

huawei 华为交换机 配置 VLAN 聚合示例

组网需求 某公司拥有多个部门且位于同一网段&#xff0c;为了提升业务安全性&#xff0c;将不同部门的用户划分到不同VLAN 中&#xff0c;如 图 5-7 所示&#xff0c; VLAN2 和 VLAN3 属于不同部门。各部门均有访问Internet需求&#xff0c;同时由于业务需要&#xff0c;不同部…...

【QT+QGIS跨平台编译】056:【pdal-dimbuilder+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、pdal介绍二、dimbuilder介绍三、pdal下载四、文件分析五、pro文件六、编译实践七、生成Dimension.hpp八、生成pdal_features.hpp一、pdal介绍 PDAL(Point Data Abstraction Library)是一个开源库,用于处理点云数据的获取、过滤、转换、分析和…...

【Python】探索Python中的aiohttp:构建高效并发爬虫

后来 我总算学会了 如何去爱 可惜你 早已远去 消失在人海 后来 终于在眼泪中明白 有些人 一旦错过就不再 &#x1f3b5; HouZ/杨晓雨TuTu《后来》 在数据密集和网络密集的任务中&#xff0c;提高程序的执行效率是非常重要的。Python作为一门强大的编程语言…...

创建真实项目vue2项目

1. 创建 vue create 项目名 2. 选择自定义 3. 勾选以下必备选项 4.选择使用vue2 5. 选择哈希模式&#xff08;n&#xff09;; css选择Less 6. ESLint校验 选择 7. 保存&#xff08;按照默认&#xff09; 8. 在哪里添加ESLint文件 9. 要不要把这个改成将来的预设&am…...

【大数据】安装hive-3.1.2

1、上传HIVE包到/opt/software目录并解压到/opt/modules/ tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/modules/ 2、修改路径 mv /opt/modules/apache-hive-3.1.2-bin/ /opt/modules/hive 3、将hIVE下的bin目录加入到/etc/profile中 export HIVE_HOME/opt/module…...

STM32工程 如何设置堆栈大小(Heap和Stack)

方法1&#xff1a;通过CubeMX、CubeIDE 配置 方法2&#xff1a;直接在启动文件中修改 &#xff08;适合所有Keil工程&#xff09; Heap、Stack的值大小&#xff0c;不管使用哪种开发环境&#xff0c;它俩都肯定在启动文件中。 可以通过CtrlF&#xff0c;搜索: Heap&#xff0…...

光纤资源运维管理升级方案,让您的网络资产价值倍增!

光纤资源管理的现状与风险 1. 管理现状 ▌▶ 排查难 ▌▶ 跟踪难 2. 潜在风险 故障隐患 资源丢失 增加业务中断时长 纤心占用不清 障排查复杂 运维压力巨大 基于数字孪生物联网技术的数字化管理升级方案 1. 快速创建光纤资源数字孪生空间 市级 区级 街道 光缆 机房 机柜 2…...

【深度学习】最强算法之:深度Q网络(DQN)

深度Q网络 1、引言2、深度Q网络2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 马上清明小长假了&#xff0c; 你这准备去哪里玩啊&#xff1f; 小鱼&#xff1a;哪也不去&#xff0c;在家待着 小屌丝&#xff1a…...

微软文本转语音和语音转文本功能更新,效果显著!

今天我要和大家分享一个新功能更新——微软的文本转语音和语音转文本功能。最近&#xff0c;微软对其AI语音识别和语音合成技术进行了重大升级&#xff0c;效果非常好&#xff0c;现在我将分别为大家介绍这两个功能。 先来听下这个效果吧 微软文本转语音和语音转文本功能更新 …...

充场拉新工作室保证金靠谱吗?找一手渠道是否免费?

在当前的互联网经济中&#xff0c;充场拉新工作室作为一种新兴的创业项目&#xff0c;吸引了众多创业者的关注。然而&#xff0c;关于是否需要支付保证金、加盟费&#xff0c;以及如何寻找免费的充场拉新一手渠道&#xff0c;许多人仍然存在疑问。 本文将为您提供专业的解答&a…...

揭秘淘宝商品详情数据接口(Taobao.item_get)

淘宝商品详情数据接口&#xff08;Taobao.item_get&#xff09;是一种允许开发者通过API访问淘宝平台上的商品详情信息的接口。通过该接口&#xff0c;开发者可以获取到商品的标题、价格、销量、描述等详细信息&#xff0c;为商品展示和销售提供数据支持。 请求示例&#xff0…...

Linux从入门到精通 --- 4(上).快捷键、软件安装、systemctl、软链接、日期和时区、IP地址

文章目录 第四章(上)&#xff1a;4.1 快捷键4.1.1 ctrl c 强制停止4.1.2 ctrl d 退出4.1.3 history4.1.4 历史命令搜索4.1.5 光速移动快捷键4.1.6 清屏 4.2 软件安装4.2.1 yum4.2.2 apt 4.3 systemctl4.4 软链接4.4.1 ln 4.5 日期和时区4.5.1 date命令4.5.2 date进行日期加减…...

ESP32调试笔记

目录 基于Thonny和micropythonESP32-CAM开发板无法连接Thonnyesp32cam局域网图传esp32代码上位机代码 基于Thonny和micropython ESP32-CAM开发板无法连接Thonny esp32cam有两个模式&#xff1a;下载模式、运行模式 两种模式的接线不同 IO0 短路 GND ! 正是因为两种模式接线…...

python -- NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+

报错分析 完整的报错&#xff1a;urllib3 v2 only supports OpenSSL 1.1.1, currently the ssl module is compiled with LibreSSL 2.8.3. See: https://github.com/urllib3/urllib3/issues/3020报错分析&#xff1a;LibreSSL 是 OpenSSL 的一个分支&#xff0c;LibreSSL 2.8.…...

解决nginx代理后,前端拿不到后端自定义的header

先说结论&#xff0c;因为前端和nginx对接&#xff0c;所以需要在nginx添加如下配置向前端暴露header add_header Access-Control-Expose-Headers Authorization 排查过程 1.后端设置了Authorization 的响应头作为token的返回&#xff0c;前后端本地联调没有问题 response.s…...

C++从入门到精通——类的6个默认成员函数之构造函数

构造函数 前言一、构造函数的概念二、构造函数特性 前言 类的6个默认成员函数&#xff1a;如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数…...

第十四届蓝桥杯省赛大学B组(C/C++)整数删除

原题链接&#xff1a;整数删除 给定一个长度为 N 的整数数列&#xff1a;A1,A2,...,AN。 你要重复以下操作 K 次&#xff1a; 每次选择数列中最小的整数&#xff08;如果最小值不止一个&#xff0c;选择最靠前的&#xff09;&#xff0c;将其删除&#xff0c;并把与它相邻的…...

openGauss学习笔记-257 openGauss性能调优-使用Plan Hint进行调优-Custom Plan和Generic Plan选择的Hint

文章目录 openGauss学习笔记-257 openGauss性能调优-使用Plan Hint进行调优-Custom Plan和Generic Plan选择的Hint257.1 功能描述257.2 语法格式257.3 示例 openGauss学习笔记-257 openGauss性能调优-使用Plan Hint进行调优-Custom Plan和Generic Plan选择的Hint 257.1 功能描…...

智慧校园|智慧校园管理小程序|基于微信小程序的智慧校园管理系统设计与实现(源码+数据库+文档)

智慧校园管理小程序目录 目录 基于微信小程序的智慧校园管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 &#xff08;1&#xff09;学生信息管理 &#xff08;2&#xff09; 作业信息管理 &#xff08;3&#xff09;公告…...

Linux 内核中的内核线程:从创建到管理

Linux 内核中的内核线程&#xff1a;从创建到管理 引言 作为一名深耕操作系统和嵌入式开发的工程师&#xff0c;我深知后台任务的重要性。在系统开发中&#xff0c;合理的后台任务管理可以提高系统的响应性和稳定性。在 Linux 内核中&#xff0c;内核线程是执行后台任务的核心机…...

高效学挖漏洞!全网最全平台汇总 + 零基础到精通指南,一篇搞定所有

一、众测平台(国内) 名称网址漏洞盒子https://www.vulbox.com/火线安全平台https://www.huoxian.cn/漏洞银行https://www.bugbank.cn/360漏洞众包响应平台https://src.360.net/补天平台&#xff08;奇安信&#xff09;https://www.butian.net/春秋云测https://zhongce.ichunqi…...

Echo:预测智能的一小步,通往通用智能的一大步

来源&#xff1a;机器之心大模型能否预测未来&#xff1f;UniPat AI 构建了一套完整的预测智能基础设施&#xff0c;Echo&#xff0c;包含动态评测引擎、面向未来事件的训练范式和预测专用模型 EchoZ-1.0。在其公开的 General AI Prediction Leaderboard 上&#xff0c;EchoZ-1…...

硕博必看|论文盲审前,这些硬伤一定要避开!

作为过来人&#xff0c;太懂硕博生面对论文盲审的焦虑——熬夜完成的论文&#xff0c;查重、改格式、找导师签字后&#xff0c;仍怕因细节被盲审专家打回、延毕。盲审专家只看质量不看人情&#xff0c;很多不起眼的小问题&#xff0c;都可能成为“致命扣分点”。今天分享核心干…...

从零开始理解反步控制:用李雅普诺夫函数一步步‘后退’设计控制器(附Simulink仿真模型)

非线性控制实战&#xff1a;用反步法构建稳定系统的可视化指南 在控制理论中&#xff0c;非线性系统总是以其复杂的动态特性让工程师们又爱又恨。传统的线性控制方法往往难以应对这种复杂性&#xff0c;而反步控制&#xff08;Backstepping Control&#xff09;作为一种系统化的…...

手把手教你用Cloudflare免费RPC节点开发以太坊应用

从零构建以太坊DApp&#xff1a;Cloudflare免费RPC节点实战指南 当你在深夜调试智能合约时&#xff0c;是否曾被突然失效的RPC节点打断思路&#xff1f;作为以太坊开发者&#xff0c;稳定可靠的节点连接是开发流程中最基础却最容易被忽视的一环。Cloudflare提供的免费以太坊RPC…...

AI与数据库融合:从经典论文到前沿实践

1. AI与数据库融合的起源与演进 数据库和人工智能这两个看似独立的领域&#xff0c;其实早在计算机科学发展的初期就已经产生了交集。上世纪70年代&#xff0c;当关系型数据库理论刚刚确立时&#xff0c;研究者们就开始探索如何让数据库系统具备一定的"智能"。当时的…...

从Hive表平滑迁移到实时湖仓?试试用Apache Paimon的Format Table零成本接入

从Hive表平滑迁移到实时湖仓&#xff1f;Apache Paimon的Format Table零成本接入实战 1. 实时湖仓转型的痛点与破局之道 在传统大数据架构中&#xff0c;Hive作为批处理的核心组件已经服务了无数企业十数年。但随着实时分析需求的爆发式增长&#xff0c;单纯依靠Hive的T1模式越…...

Visio高效安装与激活全攻略:从零开始到成功运行

1. Visio安装前的准备工作 第一次安装Visio的朋友们&#xff0c;我强烈建议先做好这些准备工作。我自己在帮同事安装Visio时&#xff0c;经常遇到因为前期准备不足导致安装失败的情况。首先&#xff0c;检查你的电脑是否已经安装了其他版本的Office软件。如果之前安装过Office …...

Hunyuan-MT 7B一键部署教程:基于Git实现快速环境搭建

Hunyuan-MT 7B一键部署教程&#xff1a;基于Git实现快速环境搭建 想试试那个在国际翻译比赛里拿了30个第一的Hunyuan-MT-7B模型吗&#xff1f;你可能在网上看到过它的介绍&#xff0c;支持几十种语言&#xff0c;翻译效果据说很惊艳。但一看到“本地部署”、“环境配置”这些词…...