C++ STL——list

List 使用帮助:

(一)常用函数:包含#include<list>

push_back()      在list的末尾添加一个元素 
push_front()      在list的头部添加一个元素

pop_back()        删除最后一个元素 
pop_front()        删除第一个元素 

assign()             给list赋值 
back()                返回最后一个元素 
begin()               返回指向第一个元素的迭代器 
clear()                删除所有元素 
empty()              如果list是空的则返回true 
end()                  返回末尾的迭代器 
erase()               删除一个元素 
front()                 返回第一个元素 
get_allocator()    返回list的配置器 
insert()                插入一个元素到list中 
max_size()          返回list能容纳的最大元素数量 
merge()               合并两个list 
rbegin()               返回指向第一个元素的逆向迭代器 
remove()             从list删除元素 
remove_if()         按指定条件删除元素 
rend()                 指向list末尾的逆向迭代器 
resize()               改变list的大小 
reverse()             把list的元素倒转 
size()                   返回list中的元素个数 
sort()                   给list排序 
splice()                合并两个list 
swap()                交换两个list 
unique()              删除list中重复的元素

 

)常用函数代码实现:

#include <list>
#include <iostream>
using namespace std;

int main()
{
    //list声明
    list<int>   list1;           //size = 0,声明1个空列表
    list<int>   list2(5);        //size = 5,声明有5个元素的列表
    list<char>  list3(5);        //size = 5,声明有5个元素的列表
    list<int>   list4(3, 10);    //声明有3个元素,每个元素为10的列表
    
    //使用迭代器遍历
    list<int>::iterator iter;
    for (iter = list4.begin(); iter != list4.end(); ++iter)
    {
        cout << *iter << " ";
    }
    cout << endl;
       
    
    //***********     常用函数  ****************//  

    list4.push_back(6);                 //在list尾部插入6
    list4.push_front(8);                //在list头部插入8
    
    cout << list4.size() << endl;       //返回元素数量
    cout << list4.empty() << endl;      //输出0,不为空   
    cout << list4.front() << endl;      //返回第1个元素
    cout << list4.back() << endl;       //返回最后1个元素
    
    
    list4.insert(list4.begin(), 100);   //在list4的首位置插入100
    list4.insert(list4.end(),2, 200);   //在list4的尾部插入2个200
    list4.insert(list4.begin(), list2.begin(), list2.end()); //把list2插入list4首部
    
    
    //使用erase清空list4, (注:这里需要注意使用erase后,迭代器的失效状态)
    iter = list4.begin();
    while(iter != list4.end())
    {

        iter = list4.erase(iter);
    }
    
    return 0;
}

List 文字补充说明:

list就是数据结构中的双向链表,因此它的内存空间是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载。但由于链表的特点,它可以以很好的效率支持任意地方的删除和插入。 

list,vector,deque选择

1. 如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector。

2. 如果你需要大量的插入和删除,而不关心随即存取,则应使用list。

3. 如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque。

 

 

注:文章为综合总结,只为给自己提供编程时可用的工具书

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值