首页 > 学院 > 开发设计 > 正文

list容器

2019-11-14 13:11:25
字体:
来源:转载
供稿:网友
list 容器实现了双向链表的数据结构,数据元素是通过链表指针串连成逻辑意义上的线性表,这样,对链表的任一位置的元素进行插入、删除和查找都是极快速的。list 的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。由于 list 对象的节点并不要求在一段连续的内存中,所以,对于迭代器,只能通过“++” 或“- -”的操作将迭代器移动到后继/前驱节点元素处。而不能对迭代器进行+n 或-n 的操作,这点,是与vector 等不同的地方。头文件:#include <list>创建list 对象(1)创建空链表,如:list<int> l;(2)创建具有n 个元素的链表,如:list<int> l(10); //创建具有10 个元素的链表有三种方法往链表里插入新元素:(1)采用push_back()方法往尾部插入新元素,链表自动扩张。(2)采用push_front()方法往首部插入新元素,链表自动扩张。(3)采用insert()方法往迭代器位置处插入新元素,链表自动扩张。l.push_back(2);l.push_back(1);l.push_back(5);//在链表头部插入新元素,链表自动扩张l.push_front(8);//在任意位置插入新元素,链表自动扩张list<int>::iterator it;it=l.begin();it++;//注意,链表的迭代器只能进行++或--操作,而不能进行+n 操作l.insert(it,20);//使用前向迭代器遍历链表输出:8 20 2 1 5反向遍历:list<int>::reverse_iterator rit;for(rit=l.rbegin();rit!=l.rend();rit++){cout<<*rit<<" ";}元素删除(1)可以使用remove()方法删除链表中一个元素,值相同的元素都会被删除。//删除值等于1 的所有元素l.remove(1);(2)使用pop_front()方法删除链表首元素,使用pop_back()方法删除链表尾元素。l.pop_front();//删除尾元素l.pop_back();//遍历链表(3)使用erase()方法删除迭代器位置上的元素。//删除第2 个元素(从0 开始计数)it=l.begin();it++;it++;l.erase(it);(4)使用clear()方法清空链表。//清空链表l.clear();元素查找采用 find()查找算法可以在链表中查找元素,如果找到该元素,返回的是该元素的迭 代器位置;如果没有找到,则返回end()迭代器位置。记得加头文件:#include <algorithm>//采用find()查找算法在链表中查找it=find(l.begin(),l.end(),5);if(it!=l.end())//找到{cout<<"find it"<<endl;}元素排序://使用sort()方法对链表排序,是升序排列l.sort();剔除连续重复元素采用 unique()方法可以剔除连续重复元素,只保留一个。//剔除连续重复元素(只保留一个)l.unique();例如:原来list中是2 8 1 1 1 5 1剔除后剩下:2 8 1 5 1
上一篇:数据库 Access002

下一篇:vector 向量容器

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表