C++中list的用法总结
list简介
list 也是顺序容器的一种。只是list 是一个双向链表。使用 list 需要包含头文件 list。双向链表的每个元素中都有一个指针指向后一个元素,也有一个指针指向前一个元素,如下图所示。

当然,list的用法和vector很类似,也拥有顺序容器中的常用方法,需要注意的是**list不支持使用下标随机存取元素。
在 list 容器中,在已经定位到要增删元素的位置的情况下,增删元素能在常数时间内完成。如下图所示,在 ai 和 ai+1 之间插入一个元素,只需要修改 ai 和 ai+1 中的指针即可:

list的成员函数
void push_front(const T & val) 将 val 插入链表最前面
void pop_front() 删除链表最前面的元素
void sort() 将链表从小到大排序
void remove (const T & val) 删除和 val 相等的元素
remove_if 删除符合某种条件的元素
void unique() 删除所有和前一个元素相等的元素
void merge(list <T> & x) 将链表 x 合并进来并清空 x。要求链表自身和 x 都是有序的
void splice(iterator i, list <T> & x, iterator first, iterator last) 在位置 i 前面插入链表 x 中的区间 [first, last),并在链表 x 中删除该区间。链表自身和链表 x 可以是同一个链表,只要 i 不在 [first, last) 中即可
list的用法实例
#include <iostream>
#include <list>
using namespace std;
int main(){
int a[6] = {1,3 ,2, 5,2,3};
int b[5] = {1,3,2,4,6};
list<int> L(a,a+6);
list<int> Lb(b,b+5);
list<int>::iterator pl;
cout<< "element in L : " ;
for(pl = L.begin(); pl != L.end();++pl){
cout << *pl << " " ;
}
cout << endl;
cout<< "element in Lb : " ;
for(pl = Lb.begin(); pl != Lb.end();++pl){
cout << *pl << " " ;
}
cout << endl;
L.sort();
cout<< "1) sort L: " ;
for(pl = L.begin(); pl != L.end();++pl){
cout << *pl << " " ;
}
cout << endl;
cout <<"2) after delete element 2: ";
L.remove(2);
for(pl = L.begin(); pl != L.end();++pl){
cout << *pl << " " ;
}
cout << endl;
cout << "3) delete first element in Lb: ";
Lb.pop_front();
for(pl = Lb.begin(); pl != Lb.end();++pl){
cout << *pl << " " ;
}
cout << endl;
cout << "4) delete all same element in L: ";
L.unique();
for(pl = L.begin(); pl != L.end();++pl){
cout << *pl << " " ;
}
cout << endl;
//使用merge
Lb.sort();
L.merge(Lb);
cout << "5) merge L with Lb: ";
L.unique();
for(pl = L.begin(); pl != L.end();++pl){
cout << *pl << " " ;
}
cout << endl;
cout << " size of Lb: " << Lb.size()<<endl;
L.reverse();
cout << "6) reverse L ";
for(pl = L.begin(); pl != L.end();++pl){
cout << *pl << " " ;
}
cout << endl;
return 0;
}
输出结果如下:

C++中list的用法总结的更多相关文章
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- C#中string.format用法详解
C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...
- SQL中distinct的用法
SQL中distinct的用法 1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...
- Oracle 中 decode 函数用法
Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...
- jQuery中Animate进阶用法(一)
jQuery中animate的用法你了解多少呢?如果仅仅是简单的移动位置,显示隐藏,哦!天哪你在浪费资源!因为animate太强大了,你可以有很多意想不到的用法!让我们一起研究一下吧~~ 首先要了解j ...
- [转载]js中return的用法
一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return; 在大多数情况下,为事件处理函 ...
- js中this的用法
经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay
- jQuery中eq()方法用法实例
本文实例讲述了jQuery中eq()方法用法.分享给大家供大家参考.具体分析如下: 此方法能够获取匹配元素集上的相应位置索引的元素. 匹配元素集上元素的位置索引是从0开始的. 语法结构: 复制代码 代 ...
- php中return的用法实例分析
本文实例讲述了php中return的用法.分享给大家供大家参考.具体分析如下: 首先,它的意思就是返回;return()是语言结构而不是函数,仅在参数包含表达式时才需要用括号将其括起来.当返回一个变量 ...
- mysql中event的用法详解
一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...
随机推荐
- spring Boot 学习(八、Spring Boot与与监控管理)
一.监控管理通过引入spring-boot-starter-actuator,可以使用Spring Boot为我们提供的准 生产环境下的应用监控和管理功能.我们可以通过HTTP,JMX,SSH协议来进 ...
- Linux中Crontab的使用
一.安装依赖 yum install cronie 二.添加 Crontab crontab -e 三.查看crontab内容 crontab -l 其中常见的一些内容 例子: # 每月的最后1天 0 ...
- java基础小练习,1-打印一百次(1~10)的随机数,2-固定一个随机数(1~100),然后猜出他,3-定义以指定格式打印集合(ArrayList类型作为参数),使用{}括起来,使用@代替,分隔每个元素
推荐自己码一下,可以使用别的方法,面向对象,不需要注重过程 /* 题目:我需要打印一百次(1~10)的随机数 */ import java.util.Random; public class demo ...
- comet oj #7
A 签到题 题目描述 多次询问,每次询问给一个值域范围 [l,r][l,r],要回答下列四个问题: 从这个范围内选出两个整数(两个数可相同), (1) 这两个数的最小公倍数最大是多少? (2) 这两个 ...
- Django:RestFramework之-------认证
3 restframework-认证 3.1APIView 认证: 认证是否已经登陆,如果已经登陆返回元组,如果没有登陆报错 源码流程: 执行dispatch方法: def dispatch(self ...
- JavaSE01:初始Java
java语言的优势 简单性 面向对象 跨平台性(可移植性) 高性能 分布式 动态性 多线程 安全性 健壮性 java最大的特点是跨平台性 Java的跨平台性来源于Java虚拟机(jvm),Java靠在 ...
- 5 dex文件
Dex文件中数据结构 类型 含义 u1 等同于uint8_t,表示1字节无符号数 u2 等同于uint16_t,表示2字节的无符号数 u4 等同于uint32_t,表示4字节的无符号数 u8 等同于u ...
- web由http升级为https搭建
nginx实现http访问 server { listen default_server; listen [::]: default_server; server_name _; root /usr/ ...
- MySQL-长事务详解
前言: 『入门MySQL』系列文章已经完结,今后我的文章还是会以MySQL为主,主要记录下近期工作及学习遇到的场景或者自己的感悟想法,可能后续的文章不是那么连贯,但还是希望大家多多支持.言归正传,本 ...
- C# 获取指定类型的文件
C# 获取指定类型的文件 public static List<FileInfo> getFile(string path, string extName) { List<FileI ...