【C++】STL中list的使用

2024-06-14 1810阅读

前言:在前面学习的 过程中我们学习了STL中的string,vector,今天我们来进一步的学习STL中的list的使用方法。

💖 博主CSDN主页:卫卫卫的个人主页 💞

👉 专栏分类:高质量C++学习 👈

💯代码仓库:卫卫周大胖的学习日记💫

💪关注博主和博主一起学习!一起努力!

【C++】STL中list的使用


目录标题

  • List常见的使用方法
    • 什么是list
    • List的常见构造方式
    • list中迭代器的使用
    • list的增删改查
    • list访问和修改元素
    • 元素的数量和清空list
    • 对list进行升序排序
    • 反转list中的元素的顺序
    • 删除list中所有等于给定值的元素

      List常见的使用方法

      什么是list

      在C++中,list是一个双向链表容器(带头双向链表如下所示)。它是C++标准库中的一种容器类型,可以用来存储和管理数据。list的特点是可以高效地执行插入和删除操作,但是在访问和搜索元素方面相对较慢。

      list的元素类型可以是任意类型,包括基本数据类型和自定义的对象类型。list容器提供了一系列的成员函数和操作符,可以用于在链表中插入、删除和访问元素,以及对链表进行遍历和操作。

      通过使用list容器,可以方便地实现一些功能,如实现队列或栈、排序和合并链表等。由于其特殊的数据结构,list在某些场景下比其他容器类型更适用,例如需要高效地在容器中插入和删除元素,而对访问元素的速度要求较低的情况。

      【C++】STL中list的使用


      List的常见构造方式

      在C++中,list可以通过多种方式进行构造。以下是几种常见的构造方式:

      1. 默认构造函数:创建一个空的list对象。

        std::list myList; // 创建一个空的list对象
        
      2. 带有初始化列表的构造函数:使用初始化列表创建一个list对象,并将其中的元素添加到list中。

        std::list myList = {1, 2, 3}; // 使用初始化列表创建list对象并添加元素
        
      3. 带有指定元素个数和初始值的构造函数:创建一个包含指定元素个数和初始值的list对象。

        std::list myList(5, 0); // 创建一个包含5个初始值为0的元素的list对象
        
      4. 通过迭代器范围构造函数:创建一个list对象,并将指定范围内的元素添加到list中。

        std::vector vec = {1, 2, 3};
        std::list myList(vec.begin(), vec.end()); // 通过迭代器范围创建一个list对象,并将vec中的元素添加到list中
        
      5. 拷贝构造函数:使用另一个list对象创建一个新的list对象,两个list对象共享元素。

        std::list myList1 = {1, 2, 3};
        std::list myList2(myList1); // 使用myList1创建一个新的list对象myList2,两个list对象共享元素
        

      这些是一些常见的list构造方式,可以根据实际需求选择合适的方式来构造list对象。


      list中迭代器的使用

      在C++中,可以使用list的iterator来访问和操作list容器中的元素。以下是一些常见的list iterator的使用方法。

      1. 声明和初始化iterator
      std::list mylist = { 1,2,3,4,5 };
      std::list::iterator it = mylist.begin();//获取指向list第一个元素的迭代器
      std::list::iterator end = mylist.end(); // 获取指向list尾部的迭代器
      
      1. 迭代器遍历list
      int main()
      {
      	std::list mylist = { 1,2,3,4,5 };
      	std::list::iterator it = mylist.begin();//获取指向list第一个元素的迭代器
      	std::list::iterator end = mylist.end(); // 获取指向list尾部的迭代器
      	while (it != end)
      	{
      		std::cout 
      	std::list 1,2,3,4,5 };
      	std::list
      		if (*it != 5)//通过迭代器修改元素的值
      		{
      			*it = 5;
      		}
      		std::cout 
      	list 1,3,4,5 };
      	list
      		cout 
      	list 10,20,0,-1,9,20,30 };
      	lt.sort();
      	list
      		cout 
      	list 10,20,0,-1,9,20,30 };
      	lt.sort();
      	list
      		cout 
      		cout 
      	list 10,10,20,30,10};
      	lt.remove(10);//删除所有为10的元素
      	list
      		cout 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]