链表是由一系列的结点组成,结点包括两个域:一个数据域,一个指针域

1、链表内存是非连续的,添加删除元素效率较高,时间复杂度都是常数项,不需要移动元素

2、链表只有在需要的时候才会分配内存

3、链表只要拿到第一个结点,相当于拿到整个链表。最后一个结点指向为空

4、链表需要额外的空间保存结点关系。前驱 后继关系

#include<iostream>
#include<list>
using namespace std;
void PrintList(list<int> mlist4)
{for (list<int>::iterator it = mlist4.begin(); it != mlist4.end(); it++) {cout << *it << " ";}cout << endl;
}
//初始化
void test01() {list<int> mlist1;list<int> mlist2(10, 2);list<int> mlist3(mlist2);list<int> mlist4(mlist2.begin(),mlist2.end());for (list<int>::iterator it = mlist4.begin(); it != mlist4.end(); it++) {cout << *it << " ";}cout << endl;
}//插入和删除
void test02() {list<int> mlist;mlist.push_back(100);mlist.push_front(200);mlist.insert(mlist.begin(), 300);mlist.insert(mlist.end(), 400);list<int>::iterator it = mlist.begin();it++;it++;mlist.insert(it, 500);  //insert的第一个参数为迭代器cout << "-------------插入------------" << endl;PrintList(mlist);//删除mlist.pop_back();mlist.pop_front();cout << "-------------pop_back&&pop_front删除------------" << endl;PrintList(mlist);cout << "-------------erase第三个数删除------------" << endl;mlist.erase(it);PrintList(mlist);cout << "-------------remove100删除------------" << endl;mlist.push_back(100);mlist.push_front(100);PrintList(mlist);mlist.remove(100);  //delete all the number which the value 100PrintList(mlist);mlist.erase(mlist.begin(), mlist.end());  //equal to mlist.clear()PrintList(mlist);
}//大小,赋值操作
void test03() {list<int> mlist1,mlist3;mlist1.assign(10, 1);mlist3.assign(10, 3);list<int> mlist2;mlist2 = mlist1;mlist1.swap(mlist3);
}//排序 反转
void test04() {list<int> mlist;for (int i = 0; i < 10; i++){mlist.push_back(i);}PrintList(mlist);cout << "反转" << endl;mlist.reverse();PrintList(mlist);
}
bool myCompare05(int v1,int v2) {return v1 > v2;
}
//排序
void test05() {list<int> mlist;mlist.push_back(200);mlist.push_back(23);mlist.push_back(90);mlist.push_back(3434);PrintList(mlist);cout << "sort" << endl;mlist.sort();  //默认从小到大PrintList(mlist);//从大到小mlist.sort(myCompare05);PrintList(mlist);
}//算法sort 支持可随机访问的容器int main(int) {cout << "------------test01-------------" << endl;test01();cout << "------------test02-------------" << endl;test02();cout << "------------test03-------------" << endl;test03();cout << "------------test04-------------" << endl;test04();cout << "------------test05-------------" << endl;test05();return 0;
}

STL13-list容器(链表)相关推荐

  1. STL源码剖析 stack 栈 概述->(使用deque双端队列 / list链表)作为stack的底层容器

    Stack是一种先进后出的数据结构,他只有一个出口 stack允许 新增元素.移除元素.取得最顶端的元素,但是无法获得stack的内部数据,因此satck没有遍历行为 Stack定义的完整列表 (双端 ...

  2. Qt-连续容器及迭代器

    一.连续容器 1.连续容器->向量QVector<T>   向量连续容器是把项存储到内存中相邻的位置的数据结构.   与C++数组的区别在于,向量连续容器知道自己的大小并且可以被重新 ...

  3. 【C++ STL学习笔记】C++ STL序列式容器(array,vector,deque,list)

    文章目录 C++ STL容器是什么? 迭代器是什么,C++ STL迭代器(iterator)用法详解 迭代器类别 迭代器的定义方式 C++序列式容器(STL序列式容器)是什么 容器中常见的函数成员 C ...

  4. C++提高编程----STL标准模板库-常用容器

    STL标准模板库(Standard Template Library)-常用容器 C++的,面向对象和泛型编程,目的就是提高代码的复用性:为了建立数据结构和算法的统一标准,诞生了STL 一.STL初识 ...

  5. 深度揭秘垃圾回收底层,这次让你彻底弄懂她

    Java 与 C++ 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙 ---<深入理解Java虚拟机> 我们知道手动管理内存意味着自由.精细化地掌控,但是却极度依赖于开发人员的水平和细 ...

  6. java afconsole_Java ——基础语法

    package myhello; //本类所在的包的路径 import af.util.AfMath;//导入对应的类 import java.util.Random;//导入随机数的类 public ...

  7. RT-thread内核之对象管理系统

    一.数据结构 1.对象控制块:在include/rtdef.h中定义 1 /** 2 * Base structure of Kernel object 3 */ 4 struct rt_object ...

  8. 深度揭秘垃圾回收底层,这次让你彻底弄懂它

    作者 | 是Yes呀 来源 | yes的练级攻略(ID:yes_java) 头图 |  CSDN 下载自东方IC Java 与 C++ 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙 ---< ...

  9. 深度揭秘Java GC底层,这次让你彻底弄懂她

    Java 与 C++ 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙 -<深入理解Java虚拟机> 我们知道手动管理内存意味着自由.精细化地掌控,但是却极度依赖于开发人员的水平和细心程 ...

  10. C++ - STL标准库

    1.C++ STL标准库简介 长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出"可重复运用的东西" 的方法,从函数(functions),类别(classes) ...

最新文章

  1. 爬虫之数据提取响应内容的分类
  2. c++中几种常见的类型转换。int与string的转换,float与string的转换以及string和long类型之间的相互转换。to_string函数的实现和应用。...
  3. 图形驱动程序和显卡驱动什么区别_专业图形显卡和游戏显卡的区别以及建模和渲染的性能要求...
  4. java怎么运行class文件,面试必会
  5. MDK 的编译过程及文件类型全解
  6. java eclipse 内存_java – Eclipse 3.5.1使用大量内存
  7. java线程----生产者和消费者问题
  8. 鸿蒙唯独没有手机,想用鸿蒙OS,却没有华为手机?华为高层:还有1亿台设备可体验...
  9. html5垂直线怎么画,HTML5 Canvas画线技巧
  10. 84-java版spark2.x读取es6.x
  11. Java创建对象小结
  12. SpringBoot配置logback日志 (六)
  13. Base64 Base32 Base16全家桶
  14. 怎么把m4a转换成mp3?
  15. MySql主键和唯一索引的区别
  16. python实现按下特定键截屏
  17. 已知从1970年1月1日0分0秒到目前的总秒数计算当前时间
  18. Pycharm使用技巧:Split Vertically/Horizontally(垂直/水平拆分窗口)
  19. 学习计算机组成原理课程,推荐书籍,写CPU(随做更新
  20. docker--privileged

热门文章

  1. ecshop nginx php-fpm,ecshop在nginx下配置常见问题
  2. 千牛怎么注销卖家店铺_新店铺怎么拥有亚马逊购物车?亚马逊小卖家如何尽快获得黄金购物车?...
  3. c 将txt导入oracle,如何把文本数据导入Oracle中?
  4. 中3d库后接负载_Nature子刊:近红外光交联水凝胶用于活体生物3D打印
  5. HashMap 学习笔记
  6. linux连接svn上代码,代码管理平台介绍、安装svn、客户端上使用svn(linux)、客户端上使用svn(windows)...
  7. mysql 分区 性能更差_用案例分析MySQL 5.7分区表性能下降的根本原因
  8. Android9.0 http网络请求失败问题的处理
  9. LeetCode(#118)————杨辉三角形
  10. android ble蓝牙接收不到数据_Android蓝牙4.0 Ble读写数据详解 -2