STL-list的使用 详细说明

本文详细介绍了C++ STL中的list容器,包括数据操作(如assign、push/pop前后、insert、erase、swap、resize、clear)、迭代器的使用(begin、end、rbegin、rend)、容量检查(empty、size、max_size)、元素访问(front、back)以及操作(splice、remove、remove_if、unique、merge、sort、reverse)。通过实例展示了各种操作的用法和效果。
摘要由CSDN通过智能技术生成

list

list是一个具有头结点的双向循环链表,结构较为复杂,但是非常高效。
现在我创建一个list对象
首先需要包头文件:

#include <list>

std::list<int> l1;

这个例子中,我实例化出了一个存int类型的对象。

接下来我参考cpulscpuls.com,介绍接口的用法:

一:数据操作:

1.assign:

①: void assign (size_type n, const value_type& val);
②: template <class InputIterator>
    void assign (InputIterator first, InputIterator last);  

①:

    std::list<int> first;
    first.assign(7, 100);//在first存了7个100  

此时,first里存有7个100
给出first的结构:
这里写图片描述
②:

    std::list<int> second;
    second.assign(first.begin(), first.end()); //插入一段从first的begin到end结束的区间

那么此时,second也里存有7个100(左闭右开)

    int myints[] = { 1776, 7, 4 };//定义一个数组:1776 7 4
    first.assign(myints, myints + 3);//插入从myints到myints+1这段区间

此时,first里清除7个100,而是存有1776 7 4。
2.push_front:头插

void push_front (const value_type& val);
    std::list<int> mylist(2, 100);//100 100
    mylist.push_front(200);//200 100 100
    mylist.push_front(300);//300 200 100 100

3.pop_front:头删

void pop_front();
    std::list<int> mylist(2, 100);//100 100
    mylist.pop_front();//100

4.push_back:尾插

void push_back (const value_type& val);
    std::list<int> mylist;
    mylist.push_back(1);
    mylist.push_back(2);
    mylist.push_back(3);
    mylist.push_back(4);

此时,mylist里存有1 2 3 4四个数据。
5.pop_back:尾删

void pop_back();

删除尾上的数据,较容易
6.insert:

①: iterator insert (iterator position, const value_type& val);  
②: void insert (iterator position, size_type n, const value_type& val); 
③: template <class InputIterator>
    void insert (iterator position, InputIterator first, InputIterator last);

①:

    std::list<int> mylist;
    for (int i = 1; i <= 5; ++i) mylist.push_back(i); // 1 2 3 4 5

    std::list<int>::iterator it = mylist.begin();//迭代器it指向1
    ++it;//那么it指向2        

    mylist.insert(it, 10);                        //在it前插入10

此时,mylist里存有1 10 2 3 4 5
②:

 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值