C++ list容器

本文展示了如何在C++中使用std::list容器进行元素操作,包括显示元素、插入、删除、获取大小、排序等。示例代码演示了list的push_back、resize、insert、erase、sort等方法的用法。
摘要由CSDN通过智能技术生成

list 容器

#include <iostream>
#include <list>
#include <algorithm>


/*
 list (链表)容器
 list是一个双向链表,支持快速 插入、删除、
 list不支持随机访问,不支持下标运算符
*/

// 使用函数模板
template <typename T>
void display(const std::list<T> &arr){
    // 打印 array 数组内的元素
    for (const auto &i: arr)
        std::cout << i << " ";

    std::cout << std::endl;
}


void test1()
{
    std::list<int> d1 {1, 2, 3, 4, 5};
    display(d1);

    std::list<std::string> l2{"--"};
    // 尾部添加
    l2.push_back("hello");
    l2.push_back("world");
    display(l2);

    std::list<int>l3;
    l3 = {1, 2, 3, 4, 5, 6, 7};
    display(l3);

    std::list<int>l4(3, 88);
    display(l4);
}

void test2()
{
    std::list<int> d1 {1, 2, 3, 4, 5};

    std::cout << "第一个元素:" << d1.front() << std::endl;
    std::cout << "最后一个元素:" << d1.back() << std::endl;
    std::cout << "大小:" << d1.size() << std::endl;

    d1.clear(); // 清空
    std::cout << "大小:" << d1.size() << std::endl;

}

void test3()
{
    std::list<int> d1 {1, 2, 3, 4, 5};
    d1.resize(3);  // 1,2,3
    display(d1);
}
void test4()
{
    std::list<int> l1 {1, 2, 3, 4, 5};
    // 找到第一个3 在3前面追加一个100
    std::list<int>::iterator it = std::find(l1.begin(), l1.end(),3);
    if (it != l1.end())
        l1.insert(it, 100);
    display(l1);

    std::list<int>l2 {10, 12, 13,};

    // 将l2中的元素插入到l1中   插入位置是 之前list内3的前面
    l1.insert(it, l2.begin(), l2.end());
    display(l1);

    std::advance(it, -2); // 使it 向前移动2个位置
    std::cout << *it << std::endl; // 只能使用 指针的解引用来获取内部的值

    l1.erase(it); // 删除it指向的元素  当前删除的值是12
    display(l1);
}

void test5()
{
    std::list<int> l1 {5, 2, 1, 4, 3};
    l1.sort();  // 排序
    display(l1);
}
int main()
{
    // test1();
    // test2();
    // test3();
    // test4();
    test5();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默执_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值