C++,stl,list容器详解

目录

1.list基本概念

2.list构造函数

3.list的赋值和交换 

4.list大小操作

 5.list的插入的删除

6.list数据存取

7.list反转和排序

排序案例


1.list基本概念

2.list构造函数

#include<bits/stdc++.h>
using namespace std;void print(const list<int> &lk)
{for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++){cout << *it << " ";}cout << endl;}int main()
{list<int> lk1;lk1.push_back(78);lk1.push_back(98);lk1.push_back(59);print(lk1);list<int>lk2(lk1.begin(),lk1.end());print(lk2);list<int>lk3(lk2);print(lk3);list<int>lk4(3,99);print(lk4);return 0;
}

3.list的赋值和交换 

#include<bits/stdc++.h>
using namespace std;void print(const list<int> &lk)
{for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++){cout << *it << " ";}cout << endl;}int main()
{list<int> lk1;lk1.push_back(78);lk1.push_back(98);lk1.push_back(59);print(lk1);list<int>lk2;lk2 = lk1;print(lk2);list<int>lk3;lk3.assign(lk2.begin(),lk2.end());print(lk3);list<int>lk4;lk4.assign(3,999);print(lk4);cout << "交换前:lk3 ";print(lk3);lk3.swap(lk4);cout << "交换后:lk3 ";print(lk3);return 0;
}

4.list大小操作

#include<bits/stdc++.h>
using namespace std;void print(const list<int> &lk)
{for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++){cout << *it << " ";}cout << endl;}int main()
{list<int> lk1;lk1.push_back(78);lk1.push_back(98);lk1.push_back(59);print(lk1);cout << lk1.empty() << endl;cout << lk1.size() << endl;lk1.resize(5,100);print(lk1);//指定长度比原来长默认用0来填充//指定长度比原来短会删除多余的部分return 0;
}

 

 5.list的插入的删除

#include<bits/stdc++.h>
using namespace std;void print(const list<int> &lk)
{for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++){cout << *it << " ";}cout << endl;}int main()
{list<int> lk1;lk1.push_back(78);lk1.push_back(98);lk1.push_back(59);lk1.push_front(334);lk1.push_front(45);print(lk1);lk1.pop_back();print(lk1);lk1.pop_front();print(lk1);list<int>::iterator it = lk1.begin();it++;lk1.insert(it,1000);print(lk1);lk1.erase(lk1.begin());print(lk1);lk1.push_back(78);lk1.remove(78);print(lk1);//刪除所有的78lk1.clear();print(lk1);cout << "結束" << endl;return 0;
}

 

6.list数据存取

#include<bits/stdc++.h>
using namespace std;void print(const list<int> &lk)
{for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++){cout << *it << " ";}cout << endl;}int main()
{list<int> lk1;lk1.push_back(78);lk1.push_back(98);lk1.push_back(59);lk1.push_front(334);lk1.push_front(45);print(lk1);//不支持用[]和at方式訪問//也不能用it = it + 1,但可以it++和it--//因為不支持迭代器的隨機訪問cout << lk1.front() << endl;cout << lk1.back() << endl;return 0;
}

 

7.list反转和排序

#include<bits/stdc++.h>
using namespace std;void print(const list<int> &lk)
{for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++){cout << *it << " ";}cout << endl;}bool cmp(int v1,int v2)
{return v1 > v2;//降序就讓第一個數大於第二個數
}int main()
{list<int> lk1;lk1.push_back(78);lk1.push_back(98);lk1.push_back(59);lk1.push_front(334);lk1.push_front(45);print(lk1);lk1.reverse();print(lk1);//所有不支持隨機訪問迭代器的容器,不可以用標準算法//它內部會提供算法lk1.sort();cout << "默認從小到大:" << endl;print(lk1);lk1.sort(cmp);cout << "更改後變為從大到小:" << endl;print(lk1);return 0;
}

排序案例

#include<bits/stdc++.h>
using namespace std;class person
{
public:person(string name,int age,int height){this -> name = name;this -> age = age;this -> height = height;}string name;int age;int height;
};bool cmp(person &p1,person &p2)
{if(p1.age == p2.age) return p1.height > p2.height;else return p1.age < p2.age;
}int main()
{list<person> l;person p1("熊貓",3,180);person p2("企鵝",5,160);person p3("老虎",3,200);l.push_back(p1);l.push_back(p2);l.push_back(p3);for(list<person>::iterator it = l.begin(); it != l.end(); it++){//小括號這裡必須加cout << (*it).name << ' ' << (*it).age << ' ' << (*it).height << endl;}cout << "排序後" << endl;cout << "--------------------------" << endl;l.sort(cmp);//自定义数据类型必须指定排序规则for(list<person>::iterator it = l.begin(); it != l.end(); it++){//小括號這裡必須加cout << (*it).name << ' ' << (*it).age << ' ' << (*it).height << endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2778067.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

.NET命令行(CLI)常用命令

本文用于记录了.NET软件开发全生命周期各阶段常用的一些CLI命令&#xff0c;用于开发速查。 .NET命令行&#xff08;CLI&#xff09;常用命令 项目创建&#xff08;1&#xff09;查看本机SDK&#xff08;2&#xff09;查看本机可以使用的.NET版本&#xff08;3&#xff09;生成…

【开源】SpringBoot框架开发桃花峪滑雪场租赁系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设计3.1 教练表3.2 教练聘请表3.3 押金规则表3.4 器材表3.5 滑雪场表3.7 售票表3.8 器材损坏表 四、系统展示五、核心代码5.1 查询教练5.2 教练聘请5.3 查询滑雪场5.4 滑雪场预定5.5 新…

基于完全二叉树实现线段树-- [爆竹声中一岁除,线段树下苦踌躇]

文章目录 一.完全二叉树完全二叉树的父子结点引索关系 二.线段树三.基于完全二叉树实现线段树关于线段树的结点数量问题的证明递归建树递归查询区间和递归单点修改线段树模板题 一.完全二叉树 完全二叉树的物理结构是线性表,逻辑结构是二叉树 完全二叉树的父子结点引索关系 …

【数据结构】双向链表(链表实现+测试+原码)

前言 在双向链表之前&#xff0c;如果需要查看单链表来复习一下&#xff0c;链接在这里&#xff1a; http://t.csdnimg.cn/Ib5qS 1.双向链表 1.1 链表的分类 实际中链表的结构非常多样&#xff0c;以下情况组合起来就有8种链表结构&#xff1a; 1.1.1 单向或者双向 1.1.2 …

专业135+总400+中国科学院大学859国科大信号与系统考研经验电子信息与通信,真题,大纲,参考书

今年考研专业课859信号与系统135&#xff0c;总分400上岸国科大&#xff0c;总结一下自己这一年的复习经验&#xff0c;希望对后面报考中科院大学的同学有所帮助。 专业课&#xff1a; 国科大不同研究所都是统一命题&#xff0c;859信号与系统的参考书目是郑君里的《信号与系…

C语言——oj刷题——调整数组使奇数全部都位于偶数前面

题目&#xff1a; 输入一个整数数组&#xff0c;实现一个函数&#xff0c;来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分&#xff0c;所有偶数位于数组的后半部分。 一、实现方法&#xff1a; 当我们需要对一个整数数组进行调整&#xff0c;使得奇数位于数…

[职场] 职场上该如何和同事相处呢?七种方法教你和同事友好相处 #其他#媒体

职场上该如何和同事相处呢&#xff1f;七种方法教你和同事友好相处 在职场上&#xff0c;如何和同事相处是一堂必修课。同事&#xff0c;是我们天天必须看到的人&#xff0c;只有和同事友好相处&#xff0c;我们才能生活得更好&#xff0c;工作得更好。那么&#xff0c;我们在…

Days 27 ElfBoard 板 AltiumDesigner 相同电路快速布局布线

在进行设计开发的时候&#xff0c;总会遇到相同的电路&#xff0c;或者模块&#xff0c;这些电路可以使用相同的布局和走线&#xff0c;例如 DC-DC 电源、网口 PHY 电路部分。这类型的电路&#xff0c;我们可以采用AltiumDesigner 中的 Room 进行布局和布线的快速复制&#xff…

备战蓝桥杯---动态规划之背包问题引入

先看一个背包问题的简单版&#xff1a; 如果我们暴力枚举可能会超时。 但我们想一想&#xff0c;我们其实不关心怎么放&#xff0c;我们关心的是放后剩下的体积。 用可行性描述即可。 于是我们令f[i][j]表示前i个物品能否放满体积为j的背包。 f[i][j]f[i-1][j]||f[i-1][j-v…

【十四】【C++】list 的常见用法

list 的初始化和遍历 /*list的初始化和遍历*/ #if 1 #include <list> #include <vector> #include <iostream> #include<algorithm> using namespace std;void TestList1(){list<int> L1;list<int> L2(10, 5);vector<int> v{1,2,3,4…

使用Arduino UNO和蓝牙模块制作智能小车

目录 概述 1 硬件结构 1.1 硬件组成 1.2 蓝牙模块介绍 1.3 控制板IO引脚定义 2 机械结构 3 固件设计 4 App设计 5 参考文献 概述 本文主要介绍使用Arduino UNO作为主板&#xff0c;用于控制电机和接收蓝牙模块数据。蓝牙模块用于从手机App上接收控制信号&#xff0c;使…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第10章 项目进度管理(四)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

巴尔加瓦算法图解:算法运用(上)

目录 树反向索引傅立叶变换 并行算法MapReduce函数 树 如果能将用户名插入到数组的正确位置就好了&#xff0c;这样就无需在插入后再排序。为此&#xff0c;有人设计了一种名为二叉查找树(binary search tree)的数据结构。 每个node的children 都不大于两个。对于其中的每个…

python_蓝桥杯刷题记录_笔记_全AC代码_入门4

题单目录 1.P1914 小书童——凯撒密码 2.P1028 [NOIP2001 普及组] 数的计算 3.P1036 [NOIP2002 普及组] 选数 4.P1149 [NOIP2008 提高组] 火柴棒等式 5.P1217 [USACO1.5] 回文质数 Prime Palindromes 6.P1478 陶陶摘苹果&#xff08;升级版&#xff09; 7.P1618 三连击&…

软件价值11-简单计算器

用python的tkinter做的简单计算器 代码&#xff1a; import tkinter as tkdef button_click(item):global expressionexpression expression str(item)input_text.set(expression)def button_clear():global expressionexpression ""input_text.set(""…

51单片机编程应用(C语言):串口通信

目录 通信的基本概念和种类 1.1串行通信与并行通信 ​编辑 1.2同步通信与异步通信 1.3单工&#xff0c;半双工&#xff0c;全双工 1.4通信速率 二、波特率和比特率的关系 串口通信简介&#xff1a; 1.接口标准 RS-232 2、D型9针接口定义 3.通信协议&#xff1a; …

嵌入式系统的前景:未来智能汽车

&#xff08;本文为简单介绍&#xff0c;个人的观点仅供参考&#xff09; 智能汽车时代已经来临!未来十年,我们的汽车将变得越来越智能化。各大汽车公司在研发自动驾驶技术,目标是实现真正的无人驾驶。要实现这一目标,嵌入式系统将发挥关键作用。 简单来说,嵌入式系统就是在汽…

【Make编译控制 01】程序编译与执行

目录 一、编译原理概述 二、编译过程分析 三、编译动静态库 四、执行过程分析 一、编译原理概述 make&#xff1a; 一个GCC工具程序&#xff0c;它会读 makefile 脚本来确定程序中的哪个部分需要编译和连接&#xff0c;然后发布必要的命令。它读出的脚本&#xff08;叫做 …

AcWing 1240 完全二叉树的权值(双指针)

[题目概述] 给定一棵包含 N 个节点的完全二叉树&#xff0c;树上每个节点都有一个权值&#xff0c;按从上到下、从左到右的顺序依次是 A 1 , A 2 , ⋅ ⋅ ⋅ A N A_1,A_2,⋅⋅⋅A_N A1​,A2​,⋅⋅⋅AN​&#xff0c;如下图所示&#xff1a; 现在小明要把相同深度的节点的权值…

算法竞赛进阶指南——搜索

树与图的遍历 可达性统计 #include<iostream> #include<cstring> #include<bitset> using namespace std; const int N 3e4 10; int h[N], e[N], ne[N], idx; //链式向前星 int q[N], hh, tt -1; //队列 int r[N], a[N]; //r是入度&#xff0c;a是拓扑序…