• C++之list成员函数应用总结(二百三十七)


    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

    优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

    人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

    更多原创,欢迎关注:Android系统攻城狮

    欢迎关注Android系统攻城狮

    1.前言

    本篇目的:理解C++之list成员函数应用。

    2.list成员函数介绍

    C++中的std::list是一个双向链表的容器,它提供了许多成员函数用于对链表进行操作。以下是一些常用的std::list成员函数的列表:

    • 构造函数:

      • list():默认构造函数。
      • list(const list& other):拷贝构造函数。
      • list(size_type count, const T& value):构造函数,创建包含count个值为value的元素的链表。
    • 迭代器(Iterator)相关函数:

      • begin():返回指向链表第一个元素的迭代器。
      • end():返回指向链表尾后位置的迭代器。
      • rbegin():返回指向链表最后一个元素的逆向迭代器。
      • rend():返回指向链表首元素前位置的逆向迭代器。
    • 容量相关函数:

      • empty():检查链表是否为空。
      • size():返回链表中元素的数量。
      • max_size():返回链表所允许的最大元素数量。
    • 元素访问与修改相关函数:

      • front():返回链表的第一个元素的引用。
      • back():返回链表的最后一个元素的引用。
      • push_back(const T& value):将元素加入链表尾部。
      • push_front(const T& value):将元素加入链表头部。
      • pop_back():删除链表尾部的元素。
      • pop_front():删除链表头部的元素。
    • 修改容器相关函数:

      • clear():清空链表中的所有元素。
      • erase(iterator position):删除指定位置处的元素。
      • erase(iterator first, iterator last):删除[first, last)范围内的元素。
      • insert(iterator position, const T& value):在指定位置之前插入元素。

    3.应用实例

    1. begin()end() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 begin() 函数获取列表的第一个元素的迭代器
        std::list<int>::iterator iterStart = myList.begin();
    
        // 使用 end() 函数获取列表的最后一个元素的迭代器
        std::list<int>::iterator iterEnd = myList.end();
    
        // 遍历列表
        for (std::list<int>::iterator iter = iterStart; iter != iterEnd; ++iter) {
            std::cout << *iter << " ";
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    2. rbegin()rend() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 rbegin() 函数获取列表的最后一个元素的反向迭代器
        std::list<int>::reverse_iterator iterStart = myList.rbegin();
    
        // 使用 rend() 函数获取列表的第一个元素的反向迭代器
        std::list<int>::reverse_iterator iterEnd = myList.rend();
    
        // 遍历列表
        for (std::list<int>::reverse_iterator iter = iterStart; iter != iterEnd; ++iter) {
            std::cout << *iter << " ";
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3. empty() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 empty() 函数判断列表是否为空
        if (myList.empty()) {
            std::cout << "List is empty" << std::endl;
        } else {
            std::cout << "List is not empty" << std::endl;
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4. size() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 size() 函数获取列表的元素个数
        std::cout << "Size of list: " << myList.size() << std::endl;
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5. max_size() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 max_size() 函数获取列表的最大容量
        std::cout << "Max size of list: " << myList.max_size() << std::endl;
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    6. front() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 front() 函数获取列表的第一个元素
        int firstElement = myList.front();
    
        std::cout << "First element of list: " << firstElement << std::endl;
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    7. back() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 back() 函数获取列表的最后一个元素
        int lastElement = myList.back();
    
        std::cout << "Last element of list: " << lastElement << std::endl;
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    8. push_back() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 push_back() 函数在列表末尾插入元素
        myList.push_back(6);
    
        // 输出列表中的元素
        for (int num : myList) {
            std::cout << num << " ";
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    9. push_front() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 push_front() 函数在列表开头插入元素
        myList.push_front(0);
    
        // 输出列表中的元素
        for (int num : myList) {
            std::cout << num << " ";
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    10. pop_back() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 pop_back() 函数删除列表末尾的元素
        myList.pop_back();
    
        // 输出列表中的元素
        for (int num : myList) {
            std::cout << num << " ";
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    11. pop_front() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 pop_front() 函数删除列表开头的元素
        myList.pop_front();
    
        // 输出列表中的元素
        for (int num : myList) {
            std::cout << num << " ";
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    12. clear() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 clear() 函数清空列表
        myList.clear();
    
        // 输出列表中的元素(为空)
        for (int num : myList) {
            std::cout << num << " ";
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    13. erase() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 erase() 函数删除列表中的指定元素
        std::list<int>::iterator iter = myList.erase(myList.begin()); // 删除第一个元素
    
        // 输出列表中的元素
        for (int num : myList) {
            std::cout << num << " ";
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    14. insert() 函数:

    #include 
    #include 
    
    int main() {
        std::list<int> myList = {1, 2, 3, 4, 5};
    
        // 使用 insert() 函数在指定位置插入元素
        std::list<int>::iterator iter = myList.insert(myList.begin(), 0); // 在第一个元素前插入0
    
        // 输出列表中的元素
        for (int num : myList) {
            std::cout << num << " ";
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    mixamo的动作绑定到maya模型上不能调整方向等
    十二、虚拟 DOM 和 render() 函数(2)
    在 Rocky 中使用 FreeRDP 远程连接 Windows 机器
    jQuery_链式编程/end方法
    基于Java+SpringBoot+Vue前后端分离高校教师科研管理系统设计和实现
    杰理之SPP 连接和断开事件处理【篇】
    构建和安装rdma-core用户空间库
    C语言排序代码汇总测试
    Wireshark流量分析例题
    ASP.NET MVC多表示例题-酒店管理
  • 原文地址:https://blog.csdn.net/u010164190/article/details/133268702