list 链表

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

/*
    双向环状链表
    //每一个结点 一个数据域 一个前驱指针 一个后驱指针
    随机插入方便0(1)  随机访问效率低0(n)
*/

bool foo(int a) {
    return a % 2 == 0;
}

bool foo2(int a) {
    return a == 0;
}

int main()
{
    //初始化列表
    list<int> list_test1;
    list<int> list_test2(5);//5个结点的链表 默认值是0
    list<int> list_test3(2,3);
    list<int> list_test4(list_test3);
    list<int> list_test5= list_test4;

    //末尾插入
    list_test1.push_back(10);
    list_test1.push_back(20);
    list_test1.push_back(30);

    //末尾删除
    list_test1.pop_back();

    //和vector的区别
    //排序
    list_test1.sort();
    //前侧插入
    list_test1.push_front(40);
    //前侧删除
    list_test1.pop_front();

    //merge 合并两个有序链表再排序
    list_test1.merge(list_test2);

    //清除指定值的元素 remove
    list_test1.remove(3);

    //清除满足条件的元素 remove_if  参数是返回bool的函数指针
    list_test1.remove_if(foo);
    list_test1.remove_if(foo2);//条件返回值必须是bool

    //splice 拼接结合

    //unique() 删除重复值,保证唯一
    list_test1.unique();

    for (auto& i : list_test1) {
        std::cout << i << std::endl;
    }
}

猜你喜欢

转载自www.cnblogs.com/long5683/p/11772514.html