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. Spring Boot2+Resilience4j实现容错之Bulkhead

    Resilience4j是一个轻量级.易于使用的容错库,其灵感来自Netflix Hystrix,但专为Java 8和函数式编程设计.轻量级,因为库只使用Vavr,它没有任何其他外部库依赖项.相比之下 ...

  2. Java | 顶层类(Top-Level Class)

    前言 本文内容根据 Java 官方教程中的<课程:类和对象>编写而成. 本文提供的是 JDK 14 的示例代码. 定义 顶层类(Top-Level Class),是 Java 中对类的一种 ...

  3. Redis系列(六):数据结构List双向链表LPUSH、LPOP、RPUSH、RPOP、LLEN命令

    1.介绍 redis中的list既实现了栈(先进后出)又实现了队列(先进先出) 1.示意图 2.各命令详解 LPUSH/RPUSH LPUSH: 从队列的左边入队一个或多个元素 将所有指定的值插入到存 ...

  4. python实现简单的SVM

    # -*- coding: utf-8 -*- from sklearn.svm import SVC import numpy as np print(X.shape,Y.shape) X = np ...

  5. C# 模型赋值

    /// <summary> /// 模型赋值 /// </summary> /// <param name="target">目标</pa ...

  6. Python之浅谈继承

    目录 继承 继承介绍 如何使用继承 新式类:只要继承了object类,就是新式类,再python3中,默认继承object类 经典类:没有继承object的类,就是经典类 利用继承减少代码冗余,菱形问 ...

  7. ORA-12154: TNS:could not resolve the connect identifier specified. Solved.

    进入系统属性页面 rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,, 并添加系统环境变量 ORACLE_HOME = ${path} TNS_ADM ...

  8. css盒子模型的深入理解,在块级、行内元素的区别和特性

    css盒子模型用于处理元素的内容.内边距.边框和外边距的方式简称.元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘是边框.边框以外是外边距,外边距默认是透明的 ...

  9. 关于C++命名空间namespace的理解与使用介绍

    0X00 前言 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. 0x01 与C语言区别 <iostream> ...

  10. java NIO 原理解析之学习笔记

    关键抽象 1.Buffer缓冲区 NIO数据传递模型,是一个连续的内存区域.所有数据传递均通过buffer类处理:NIO提供了字符串.整形.字节.堆等多种缓冲区. 2.Channel(通道) NIO把 ...