list_
1.对象创建
//
// Created by 徐昌真 on 2024/12/12.
//
#include <iostream>
#include <list>using namespace std;void Print(list<int> &my_list) {for ( list<int>::iterator iter = my_list.begin(); iter != my_list.end(); ++iter ){cout << *iter << ' ';}cout << endl;
}int main() {//默认构造函数list<int> list_1;cout << "list_1: ";Print(list_1);//初始化列表list<int> list_2_1 = {1,2,3,4,5}; //有等号cout << "list_2_1: ";Print(list_2_1);list<int> list_2_2 ( {1,2,3,4,6} ); //没等号cout << "list_2_2: ";Print(list_2_2);//迭代器list<int> list_3( list_2_1.begin(), list_2_1.end() );cout << "list_3: ";Print(list_3);//全0初始化( 指定初始化大小 )list<int> list_4(10);cout << "list_4: ";Print(list_4);//a个blist<int> list_5(8, 6);cout << "list_5: ";Print(list_5);//拷贝构造函数list<int> list_6(list_5);cout << "list_6: ";Print(list_6);return 0;
}

2.赋值操作
//
// Created by 徐昌真 on 2024/12/14.
//
#include <iostream>
#include <list>using namespace std;void Print( const list<int> &my_list ){for ( list<int>::const_iterator iter = my_list.begin(); iter != my_list.end(); ++iter ){cout << *iter << ' ';}cout << endl;
}int main() {list<int> list_1 = {9,8,5,2,1,1};cout << "list_1: ";Print(list_1);// 1. 等号 = 赋值list<int> list_2;list_2 = list_1;cout << "list_2: ";Print(list_2);// 2. assign(迭代器)list<int> list_3;list_3.assign(list_1.begin(), list_1.end() );cout << "list_3: ";Print(list_3);// 3. 初始化列表list<int> list_4;list_4.assign({1,2,3,4,5});cout << "list_4: ";Print(list_4);// 4. 初始化a 个 blist<int> list_5;list_5.assign(6,8);cout << "list_5: ";Print(list_5);//assign一下之前的东西看看list_5.assign(6,7); //直接重置cout << "list_5: ";Print(list_5);return 0;
}
输出

3.大小操作
//
// Created by 徐昌真 on 2024/12/14.
//
#include <iostream>
#include <list>using namespace std;void Print( list<int>& my_list){cout << "list_1: ";for ( list<int>::const_iterator iter = my_list.begin(); iter != my_list.end(); ++iter ){cout << *iter << ' ';}cout << endl;
}// 1. empty
// 2. size
// 3. resize
int main() {list<int> list_1;cout << "empty: " << list_1.empty() << endl;cout << "size: " << list_1.size() << endl;cout << endl;list_1 = {1,2,3,4,5};cout << "empty: " << list_1.empty() << endl;cout << "size: " << list_1.size() << endl;cout << endl;list_1.resize(20); //全0扩容cout << "empty: " << list_1.empty() << endl;cout << "size: " << list_1.size() << endl;Print(list_1);cout << endl;list_1.resize(22,985); //指定数字扩容cout << "empty: " << list_1.empty() << endl;cout << "size: " << list_1.size() << endl;Print(list_1);cout << endl;list_1.resize(3); //缩容cout << "empty: " << list_1.empty() << endl;cout << "size: " << list_1.size() << endl;Print(list_1);return 0;
}
输出

4.数据插入
//
// Created by 徐昌真 on 2024/12/14.
//
#include <iostream>
#include <list>
#include <vector>using namespace std;void Print(const list<int>& my_list){for (list<int>::const_iterator iter = my_list.begin(); iter != my_list.end(); ++iter ) {cout << *iter << ' ';}cout << endl;
}int main() {list<int> list_1;vector<int> vec= {6,6,6,6,6,6};// 1. push_frontlist_1.push_front(3);list_1.push_front(2);list_1.push_front(1);Print(list_1); //1 2 3// 2. push_backlist_1.push_back(4);list_1.push_back(5);list_1.push_back(6);Print(list_1); //1 2 3 4 5 6// 3. insert// (1) 迭代器( 迭代器 + 值)list<int>::iterator iter = list_1.begin();//iter++; //允许//iter += 1; //不允许list_1.insert( iter, 0);Print(list_1); //0 1 2 3 4 5 6// (2) 迭代器( 迭代器 + 数量 + 值)iter = list_1.end();list_1.insert( iter, 8,8);Print(list_1); //0 1 2 3 4 5 6 8 8 8 8 8 8 8 8// (3) 迭代器( 迭代器 + 迭代器起始位置 + 迭代器末尾位置) 在iter这个迭代器里面 插入从 迭代器起始位置 + 迭代器末尾位置的值 这个迭代器可以来自别的list 居然也可以来自vector 太强了iter = list_1.end();list_1.insert( iter, vec.begin(), vec.end());Print(list_1); //0 1 2 3 4 5 6 8 8 8 8 8 8 8 8 0 1 2 3 4 5 6 8 8 8 8 8 8 8 8return 0;
}
不理解
输出

5.删除操作
//
// Created by 徐昌真 on 2024/12/14.
//
#include <iostream>
#include <list>using namespace std;void Print( const list<int>& my_list ){for ( list<int>::const_iterator iter = my_list.begin(); iter != my_list.end(); ++iter ){cout << *iter << ' ';}cout << endl;
}int main() {list<int> list_1 = {-1,9,8,5,2,1,1,-1};Print(list_1); //-1 9 8 5 2 1 1 -1// 1. pop_frontlist_1.pop_front();Print(list_1); //9 8 5 2 1 1 -1// 2. pop_backlist_1.pop_back();Print(list_1); //9 8 5 2 1 1//erase//(1) 传入删除的位置(迭代器)list<int>::iterator iter = list_1.begin();list<int>::iterator ret = list_1.erase( iter );Print(list_1); //8 5 2 1 1cout << *ret << endl; //8//(2) 传入删除区域(迭代器)iter = list_1.end(); //指向末尾元素的下一个--iter;--iter;ret = list_1.erase( iter, list_1.end() );Print(list_1); //8 5 2 1cout << *ret << endl; //3 为什么 ???return 0;
}
输出

6.数据访问
我的疑问 : 是不是顺序表存储元素时分配的内存是连续的 而链表是分开的 所以链表不支持随机访问
回答:
是的,你的理解是正确的:
-
顺序表(如
vector):它存储元素的内存是连续的,这意味着每个元素都紧接着前一个元素。由于内存是连续的,vector可以通过索引直接访问任意位置的元素,因此支持随机访问,访问时间是常数时间 O(1) -
链表(如
list):它是由一系列节点组成的,每个节点包含数据和指向下一个节点的指针。由于内存不一定是连续的,所以不能像vector那样直接通过索引快速访问某个位置的元素。要访问链表中的某个元素,必须从头节点开始遍历,直到找到目标元素,因此链表不支持随机访问,访问时间是线性的 O(n)
总结:
- 顺序表:支持随机访问,内存连续,访问速度快O(1)
- 链表:不支持随机访问,内存不连续,访问速度慢O(n)
//
// Created by 徐昌真 on 2024/12/14.
//
#include <iostream>
#include <list>using namespace std;void Print( list<int>& my_list){ //输出cout << "list_1: ";for ( list<int>::const_iterator iter = my_list.begin(); iter != my_list.end(); ++iter ){cout << *iter << ' ';}cout << endl;
}int VisitItemByIndex( list<int>& my_list, int index ){list<int>::const_iterator iter = my_list.begin();while ( index ){++iter;--index;}return *iter;
}int main() {list<int> list_1 = {1,2,3,4,5,6};Print(list_1); //1 2 3 4 5 6 //frontcout << "list_1.front(): " << list_1.front() << endl;//backcout << "list_1.back(): " << list_1.back() << endl;//迭代器cout << VisitItemByIndex( list_1, 2 );return 0;
}

7.逆序
//
// Created by 徐昌真 on 2024/12/14.
//
#include <iostream>
#include <list>using namespace std;void Print( const list<int>& my_list ){for ( list<int>::const_iterator iter = my_list.begin(); iter != my_list.end(); ++iter ){cout << *iter << ' ';}cout << endl;
}int main() {list<int> list_1 = {1,2,3,4,5};Print(list_1);list_1.reverse();Print(list_1);return 0;
}

8.排序(原理 归并排序)
//
// Created by 徐昌真 on 2024/12/14.
//
#include <iostream>
#include <list>using namespace std;void Print( list<int>& my_list){ //输出cout << "list_1: ";for ( list<int>::const_iterator iter = my_list.begin(); iter != my_list.end(); ++iter ){cout << *iter << ' ';}cout << endl;
}int main() {list<int> list_1 = {1,2,3,4,2,4,56,3,2};list_1.sort();Print(list_1);return 0;
}
输出

相关文章:
list_
1.对象创建 // // Created by 徐昌真 on 2024/12/12. // #include <iostream> #include <list>using namespace std;void Print(list<int> &my_list) {for ( list<int>::iterator iter my_list.begin(); iter ! my_list.end(); iter ){cout <…...
电机驱动,为什么不需要变速器?
在现代汽车和工业应用中,电机驱动的技术愈发成熟,其核心优势之一是能够省去传统机械变速器的需求。 一、电机驱动的基本原理 电机驱动又被称为电动机驱动,其基本原理是将电能转化为机械能。通过控制电机的输入电压和电流,电机能…...
how to write 述职pptx as a tech manager
As a technical manager, crafting an effective 述职 (performance review) PPT requires you to highlight your leadership, team accomplishments, technical contributions, challenges faced, and future plans. Heres a structured approach to design your PPT: 1. Cov…...
关于QMessageBox的一些使用总结和避坑指南
参考学习 Qt中QMessageBox的用法—看这一篇就够了 Qt:使用QMessageBox弹出标准对话框 QMessageBox模态与非模态及QT中的exec() 如何调整QMessageBox的大小 QSS 自定义QMessageBox python QMessageBox设置标签和按钮居中、中文按钮 使用建议 经过查看多方的资料&…...
C语言预处理详解
1.预定义符号 C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的 __FILE__ //进⾏编译的源⽂件 __LINE__ //⽂件当前的⾏号 __DATE__ //⽂件被编译的⽇期 __TIME__ //⽂件被编译的时间 __STDC__ //如果编译器遵循ANSI C&#…...
大语言模型画图(流程图、框架图)
第一步:向随意大语言模型,描述内容,推荐豆包 豆包 加上下面Prompt 通过Mermaid语法,描述上面流程图 第二步:将生成Mermaid输入流程图生成网站 中文Mermaid - 流程图、关系图在线画图、生成和编辑器...
2024年API接口发展趋势:智能化、自动化引领潮流
随着信息技术的飞速发展,应用程序编程接口(API)已成为现代软件开发的核心组成部分。API作为不同系统之间的桥梁,使得数据、功能和服务能够在各种平台和设备之间无缝流动。在2024年,API接口正经历着一系列显著的变革和发…...
数据挖掘与机器学习DMML(part 8)K近邻(KNN)
K Nearest Neighbours KNN Definition KNN 是一种简单的算法,它存储所有可用案例,并根据相似度量对新案例进行分类。 KNN 不同名称: K-Nearest Neighbors • Memory-Based Reasoning基于记忆的推理 • Example-Based Reasoning基于实例的…...
Fortify 24.2.0版本最新版 win/mac/linux
工具介绍: Fortify SCA作为一款业内主流的静态代码扫描工具,被广泛应用于白盒测试中。与其他静态代码扫描工具相比,Fortify SCA的突出优势主要在于更加广泛地支持的语言和开发平台、更全面和权威的安全规则库使扫描更加全面、更加智能化的自定…...
突破时间与空间限制的富媒体百宝箱——智能工具箱:让云上内容生产更easy
“这是你的同款日常吗?老是在赶deadline,苦练PS还未出师,premiere、达芬奇真的好难,学python脑容量确实不够~打工人太难了~~” 来试试智能工具箱吧!即来即用,一键实现办公自由。图片工具、视频工具、音频工…...
MacOs使用Wine 安装UaExpert与UaExpert的使用
要在 macOS 上使用 Wine 安装和运行 UaExpert,可以按照以下步骤操作: 安装 Wine 在 macOS 上,你可以通过 Homebrew 来安装 Wine。如果你还没有安装 Homebrew,可以先安装 Homebrew,然后使用它来安装 Wine。 bash /bin…...
【Prompt Engineering】3.文本概括
一、引言 文本信息量大,LLM在文本概括任务上展现出强大能力。本章介绍如何通过编程方式调用API接口实现文本概括功能。 首先,我们需要引入 zhipuAI 包,加载 API 密钥,定义 getCompletion 函数。 from zhipuai import ZhipuAIke…...
力扣-图论-14【算法学习day.64】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
redis 架构详解
Redis架构详解可以从以下几个方面进行阐述: 一、部署架构 Redis有多种部署架构,适用于不同的应用场景和需求,主要包括以下几种: 单机模式(Standalone Mode) 特点:部署简单,配置方便…...
多分类交叉熵与稀疏分类交叉熵
总结: 标签为 One-hot 编码的多分类问题,用分类交叉熵对于标签为整数的多分类问题,用稀疏分类交叉熵稀疏分类交叉熵内部会将整数标签转换为 One-hot 编码,而如果标签已经是 One-hot 编码的形式,再使用稀疏分类交叉熵就会多此一举。 算例 假设我们有三个类别:A、B 和 C。…...
PHP 8新特性深度解析与实战应用
引言 PHP作为一种广泛使用的开源脚本语言,以其在Web开发领域的卓越性能而闻名。随着PHP 8的发布,这门语言再次迎来了许多令人兴奋的新特性和改进。本文将深入探讨PHP 8的新特性,并提供实战应用示例,帮助开发者更好地理解和使用PH…...
【C语言】UDP通信
udp使用的是数据报传输。可以一对一,一对多进行传输,用于快速,实时性高的场景 服务器端: 使用步骤: 1.创建socket 2.bind绑定可接收的客户端 3.while{ recv接收数据 send发送数据 } #include <stdio.h> #inclu…...
用Keytool和OpenSSL生成和签发数字证书
一)keytool生成私钥文件(.key)和签名请求文件(.csr),openssl签发数字证书 J2SDK在目录%JAVA_HOME%/bin提供了密钥库管理工具Keytool,用于管理密钥、证书和证书链。Keytool工具的命令在JavaSE6中已经改变,不过以前的命令仍然支持。Keytool也可以用来管理对称加密算法中…...
算法-动态数组-62.不同路径
一、题目 二、思路解析 1.思路: 对于找到目的地它的来源主要来源于目的地的上一格和目的地的左一格 2.常用方法: 无 3.核心逻辑: 1.处理边界: a.只向右移动,至始至终只有一条路径 for(int i0;i<m;i){dp[i][0]1; } …...
Y3编辑器教程5:触发器进阶使用(镜头、UI、表格、函数库、排行榜、游戏不同步)
文章目录 一、游戏声音设计二、 游戏镜头设计2.1 镜头的基本参数2.2 镜头时间轴动画 三、界面编辑3.1 界面编辑器设置3.2 添加按钮事件3.3 触发编写 四、 表格编辑器(实现对话UI)4.1 一维表和多维表4.2 数据验证、搜索、保存与撤销4.3 Excel导入导出4.4 …...
javaweb驾校考试车辆预约系统
目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分预约功能设计考试管理模块系统辅助功能技术实现参考项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 用户管理模块…...
涡轮发动机建模这事听起来玄乎,实际拆开了看也就是搭积木。咱今天用Simulink搞个能喘气的发动机模型,重点在让这铁疙瘩遇到负载突变时还能稳住转速不抖腿
【空气涡轮发动机Matlab/simulink动态仿真模型】 1、部件级模型;进气道,涡轮,气室,压气机,尾喷管,转子动力学模块,容积模块 2、PID控制器: 输出扭矩阶跃扰动下,维持转速恒定先给各个部件开户口簿…...
挑战复杂功能,让快马AI成为你微信小程序开发的智能编程搭档
最近在开发一个微信小程序时,遇到了一个比较复杂的自定义组件需求:一个可以左右滑动切换日期、并显示对应日程的周视图日历。这个功能看似简单,但实际开发中涉及到日期计算、滑动事件处理、数据绑定等多个难点。好在发现了InsCode(快马)平台&…...
Qwen3.5-2B轻量模型评测:端侧推理延迟、功耗、准确率三维平衡点实测
Qwen3.5-2B轻量模型评测:端侧推理延迟、功耗、准确率三维平衡点实测 1. 模型概述 Qwen3.5-2B是通义千问团队推出的轻量化多模态基础模型,属于Qwen3.5系列的小参数版本(20亿参数)。该模型专为低功耗、低门槛部署场景设计…...
利用快马平台AI能力,十分钟快速生成qoderwork官网原型
最近在尝试为AI代码生成工具qoderwork设计官网原型时,发现用传统方式从零开始写代码特别耗时。正好体验了InsCode(快马)平台的AI生成功能,十分钟就做出了可交互的响应式单页原型,分享下这个高效的工作流: 明确核心模块 官网原型需…...
AI专著写作工具深度剖析,从构思到完稿全程高效助力
创新是学术专著的核心所在,也是写作过程中的一大挑战。一本优秀的专著不仅应当仅仅是以往研究成果的简单集合,而是要提出贯穿整本书的全新观点、理论框架或研究方法。在庞大的学术文献中,发现未被充分研究的空白并不容易——有时是因为选题被…...
Halcon点云拼接实战:如何用特征模板搞定3D扫描缺失问题?
Halcon点云拼接实战:特征模板技术在工业3D扫描中的应用 在工业检测和逆向工程领域,3D扫描常常面临一个棘手问题——单次扫描无法完整捕获复杂物体的所有表面细节。想象一下,当您需要检测一个汽车发动机缸体的内部结构,或者重建一…...
GBase 8c 表空间规划和对象迁移
GBase 8c 表空间规划和对象迁移 我最近看 GBase 8c 资料时,越来越强烈的一个感觉是:很多现场不是不会建表空间,而是把表空间用得太晚、太散、太随意。 真正落到现场时,最常见的现象通常不是“不会执行 CREATE TABLESPACE”&#x…...
实战演练企业级mysql环境搭建,快马平台生成电商项目配置全流程
今天想和大家分享一个企业级MySQL环境搭建的实战经验。最近在帮朋友搭建一个电商网站的后台数据库,正好用到了InsCode(快马)平台来快速生成配置方案,整个过程非常顺畅。 1. 准备工作与环境选择 首先需要明确的是,企业级MySQL部署和本地开发…...
Hunyuan-MT-7B翻译模型实测:33种语言互译效果到底如何?
Hunyuan-MT-7B翻译模型实测:33种语言互译效果到底如何? 1. 引言:多语言翻译的新标杆 在全球化交流日益频繁的今天,高效准确的多语言翻译工具已成为刚需。腾讯混元团队最新开源的Hunyuan-MT-7B模型,凭借70亿参数的紧凑…...
