list和vector的用法基本相同,区别如下:

  • list可以头尾插入和删除,效率一样,vector只有尾部插入和删除效率才高,头部操作效率很低

  • list的排序有专有的接口,不能使用全局的接口,原因是list中的节点不能随机访问,vector中的节点可以随机访问

  • vector是连续存储,list不是连续存储

基本用法

#include <iostream>
#include <list> using namespace std; /*
clear() 清空链表
empty() 判断list是否为空
size() 获取list中的元素个数
pop_back() 删除最后一个元素(效率高)
pop_front() 删除第一个元素(效率高)
push_back() 在list的末尾添加一个元素(效率高)
push_front() 在list的头部添加一个元素(效率高)
erase() 删除指定元素
sort() 排序
reverse() 反转
*/ int main()
{
list<int> l; l.push_back();
l.push_back();
l.push_front();
l.push_front(); cout << "size : " << l.size() << endl; l.sort(); // 特有排序接口 reverse(l.begin(), l.end()); // 4 3 2 1
for(list<int>::iterator it = l.begin(); it != l.end(); ++it)
{
cout << *it << ends;
}
cout << endl; l.clear(); cout << "size : " << l.size() << endl; return ;
}

循环删除(类似vector)

#include <iostream>
#include <list> using namespace std; int main()
{
list<int> l; l.push_back();
l.push_back();
l.push_front();
l.push_front(); // 循环删除
for(list<int>::iterator it = l.begin(); it != l.end();)
{
if(*it == )
{
it = l.erase(it);
}
else
{
++it;
}
} // 2 3 1
for(list<int>::iterator it = l.begin(); it != l.end(); ++it)
{
cout << *it <<ends;
}
cout << endl; return ;
}

随机推荐

  1. 利用salt stack pillar安装多组keepalived

    利用salt stack pillar安装多组keepalived 环境描述 在生产环境中,需要搭建三套keepalived环境,3个master和3个backup,要安装的软件和配置文件,虽然不是很 ...

  2. java map里面进行ASCII 码从小到大排序(字典序)

    public static String getAsciiSort(Map<String, Object> map) { List<Entry<String, Object&g ...

  3. Win8.1安装配置64位Oracle Database 11g的详细图文步骤记录

    在开始Oracle数据安装之前建议:1.关闭本机的病毒防火墙.2.断开互联网. 这样可以避免解压缩丢失文件和安装失败. Step1 Oracle官网下载好Windows系统64位的安装包,下载速度慢的 ...

  4. js基础练习题(1)

    1.字符串 视频教程地址: js基础练习题 1.如何连接两个或者两个以上字符串? var cssname = 'box' var num = 1 var html = '<div class=& ...

  5. 基于AOP和ThreadLocal实现日志记录

    基于AOP和ThreadLocal实现的一个日志记录的例子 主要功能实现 : 在API每次被请求时,可以在整个方法调用链路中记录一条唯一的API请求日志,可以记录请求中绝大部分关键内容.并且可以自定义 ...

  6. ASP.NET MVC 中解决Session,Cookie等依赖的方式

    原文:https://blog.csdn.net/mzl87/article/details/90580869 本文将分别介绍在MVC中使用Filter和Model Binding两种方式来说明如何解 ...

  7. 使用vs2019加.net core 对WeiApi的创建

    vs2019创建webapi 1.创建新的项目 2.选择.NET CORE的ASP .NET CORE WEB应用程序 3.定义项目名称和存放地点 4.选择API创建项目 5.删除原本的无用的类 6. ...

  8. Html5中input新增的表单元素和属性介绍。

    input标签主要用于Web表单的创建交互,以便接受来自用户的数据. 我们通过更改type属性的值,来实现不同的输入类型.在以前的写法中表单元素必须放在form元素所包含的里面,而在html5中,我们 ...

  9. scrapy框架携带cookie访问淘宝购物车

    我们知道,有的网页必须要登录才能访问其内容.scrapy登录的实现一般就三种方式. 1.在第一次请求中直接携带用户名和密码. 2.必须要访问一次目标地址,服务器返回一些参数,例如验证码,一些特定的加密 ...

  10. scala 数据结构(八 ):-map映射操作

    在Scala中可以通过map映射操作来解决: 将集合中的每一个元素通过指定功能(函数)映射(转换)成新的结果集合这里其实就是所谓的将函数作为参数传递给另外一个函数,这是函数式编程的特点 以HashSe ...