list基本使用

Posted chusiyong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了list基本使用相关的知识,希望对你有一定的参考价值。

list和vector的用法基本相同,区别如下:

  • list可以头尾插入和删除,效率一样,vector只有尾部插入和删除效率才高,头部操作效率很低

  • list的排序有专有的接口,不能使用全局的接口,原因是list中的节点不能随机访问,vector中的节点可以随机访问

  • vector是连续存储,list不是连续存储

基本用法

#include <iostream>
#include <list>

using namespace std;

/*
    clear()            清空链表
    empty()         判断list是否为空
    size()             获取list中的元素个数 
    pop_back()         删除最后一个元素(效率高) 
    pop_front()     删除第一个元素(效率高) 
    push_back()     在list的末尾添加一个元素(效率高)  
    push_front()     在list的头部添加一个元素(效率高) 
    erase()         删除指定元素 
    sort()             排序
    reverse()        反转
*/
 
int main()
{
    list<int> l;
    
    l.push_back(1);
    l.push_back(4);
    l.push_front(3);
    l.push_front(2);
    
    cout << "size : " << l.size() << endl;
    
    l.sort(); // 特有排序接口

    reverse(l.begin(), l.end());
    
    // 4 3 2 1 
    for(list<int>::iterator it = l.begin(); it != l.end(); ++it)
    {
        cout << *it << ends;
    }
    cout << endl;
    
    l.clear();
    
    cout << "size : " << l.size() << endl;

    return 0;
}    

循环删除(类似vector)

#include <iostream>
#include <list>

using namespace std;
 
int main()
{
    list<int> l;
    
    l.push_back(1);
    l.push_back(4);
    l.push_front(3);
    l.push_front(2);
    
    // 循环删除
    for(list<int>::iterator it = l.begin(); it != l.end();)
    {
        if(*it == 4)
        {
            it = l.erase(it);
        }
        else
        {
            ++it;
        }
    }
    
    // 2 3 1
    for(list<int>::iterator it = l.begin(); it != l.end(); ++it)
    {
        cout << *it <<ends;
    }
    cout << endl;

    return 0;
}    

 

以上是关于list基本使用的主要内容,如果未能解决你的问题,请参考以下文章

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect(代码片段

python调试:pdb基本用法(转)

常见的代码片段

201621123062《java程序设计》第九周作业总结

如何从片段外部清除/重置地图?