list 容器实现了双向链表的数据结构,数据元素是通过链表指针串连成逻辑意义上的线 性表,这样,对链表的任一位置的元素进行插入、删除和查找都是极快速的。

图 2-7 是 list 采用的双向循环链表的结构示意图。

由于 list 对象的节点并不要求在一段连续的内存中,所以,对于迭代器,只能通过“++” 或“- -”的操作将迭代器移动到后继/前驱节点元素处。而不能对迭代器进行+n 或-n 的操 作,这点,是与 vector 等不同的地方

代码如下:

 #include<iostream>
#include<algorithm>
#include<list>
using namespace std;
int main(){
//创建空链表
list<int> l;
//创建具有n个元素的链表
list<int> l1();//创建具有10个元素的链表
//三种方法插入新的元素
//采用push_back()方法往尾部插入新元素,链表自动扩张。
//采用push_front()方法往首部插入新元素,链表自动扩张
//采用insert()方法往迭代器位置处插入新元素,链表自动扩张。
//迭代器只能“++”或“--”操作,不能进行+n或-n操作
//链表尾部插入新元素
l.push_back();
l.push_back();
l.push_back();
//链表头部插入新元素
l.push_front();
//在任意位置插入新元素
list<int>::iterator it;
it=l.begin();
it++;
l.insert(it,);
//使用前向迭代器遍历链表
list<int>::iterator it1;
for(it1=l.begin();it1!=l.end();it1++){
cout<<*it1<<" ";
}
cout<<endl;
//反向遍历用反向迭代器reverse_iterator
list<int>::reverse_iterator rit;
for(rit=l.rbegin();rit!=l.rend();rit++){
cout<<*rit<<" ";
}
cout<<endl;
//可以使用remove()方法删除链表中一个元素,值相同的元素都会被删除。
l.remove();
//使用pop_front()方法删除链表首元素,使用pop_back()方法删除表尾元素。
l.pop_front();
l.pop_back();
//使用erase()方法删除迭代器位置上的元素。
list<int>::iterator it2;
it2=l.begin();
it2++;
l.erase(it2);
//元素查找,返回迭代器的位置,没有找到,返回end()的位置
list<int>::iterator it3;
it3=find(l.begin(),l.end(),);
if(it3!=l.end()){
cout<<"find it"<<endl;
}
else
{
cout<<"not find it"<<endl;
}
//元素排序sort()
l.sort();
//剔除重复元素unique(),只保留一个
l.unique();
//清空链表,clear()
l.clear();
return ;
}

List双向链表容器的更多相关文章

  1. list双向链表容器(常用的方法总结)

    特别注意,由于list对象的结点并不要求在一段连续的内存中,所以,对于迭代器,只能通过++或者--的操作将迭代器移动到后继或者前驱结点元素处.而不能对迭代器进行+n或者-n的操作,这点与vector等 ...

  2. stl之list双向链表容器应用基础

    不同于採用线性表顺序存储结构的vector和deque容器.list双向链表中任一位置的元素差值.插入和删除,都具有高效的常数阶算法时间复杂度O(1). 头文件 #include<list> ...

  3. 2_STL容器

    STL算法的精髓在于  算法的  返回值!!! String: string是STL的字符串类型,通常用来表示字符串:C语言中一般用char* char*字符指针;string是类封装了char*,管 ...

  4. STL学习系列六:List容器

    List简介 list是一个双向链表容器,可高效地进行插入删除元素. list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符.it++(ok), it+5(err) #include ...

  5. nginx学习六 高级数据结构之双向链表ngx_queue_t

    1 ngx_queue_t简单介绍 ngx_queue_t是nginx提供的一个轻量级的双向链表容器,它不负责存储数据,既不提供数据的内存分配.它仅仅有两个指针负责把数据链入链表.它跟stl提供的qu ...

  6. STL - list(双向链表)

    List简介 list是一个双向链表容器,可高效地进行插入删除元素. list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符.It++(ok) it+5(err) #include & ...

  7. 05--STL序列容器(List)

    一:List双向链表简介 list是一个双向链表容器,可高效地进行插入删除元素. list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符.It++(ok) it+5(err)list不 ...

  8. STL之List容器

    1.List容器 1) list是一个双向链表容器,可高效地进行插入删除元素. 2)list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符.It++(ok) it+5(err) 3)头 ...

  9. STL常用容器使用方法

    在程序头部使用#include<stack>来引入STL的stack容器,然后使用stack<int> s语句来声明一个管理整型数据的容器s.stack常用成员函数:push( ...

随机推荐

  1. LR 两种html与url录制

    一直在使用LR,对于Html_based script和Url-based script 两种录制方式之间,要如何选择,仍是一知半解.最近测试时遇到同样的业务功能,两种录制方式的脚本,单次执行时间差别 ...

  2. js-cookie和session

    ###1.cookie 含义: 存储在访问者的计算机中的变量,即存储在客户端 创建一个cookie /* getCookie方法判断document.cookie对象中是否存有cookie,若有则判断 ...

  3. 使用node写一个简单的页面操作

    let http = require('http'); let urlStr = require('url'); let fs = require('fs'); let path = require( ...

  4. array_filter与array_map

    php数组array_filter函数和array_slice函数:<?php /* array_filter()用回调函数过滤数组中的单元 array_filter(array,functio ...

  5. git fetch 和git pull 的差别

    1.git fetch 相当于是从远程获取最新到本地,不会自动merge,如下指令: git fetch orgin master //将远程仓库的master分支下载到本地当前branch中 git ...

  6. MySQL5.5 安装配置方法教程

    MySQL下载地址:http://dev.mysql.com/downloads/installer/ 1.首先进入的是安装引导界面 2.然后进入的是类型选择界面,这里有3个类型:Typical(典型 ...

  7. 阿里巴巴 Java开发手册1.4.0

    <阿里巴巴Java开发手册1.4.0>下载地址: 下载地址:https://102.alibaba.com/downloadFile.do?file=1528269849853/Java_ ...

  8. python爬虫之正则表达式

    一.简介 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念 ...

  9. 在eclipse中spring的xml配置文件标签中class路径全限定名自动提示设置

    这个自动提示其实很简单,没有网上说的那些要在help下的Install中输入网址来下载更新一堆东西那么复杂. 只需要打开Help — — >Eclipse Marketplace... 然后在该 ...

  10. mysql对身份证号码进行脱敏处理

    select * from test 格式:INSERT(str,pos,len,newstr) 解释: str:查询的例 pos:起始位置 len:从起始位置开始被后面newstr替换的长度 new ...