【C++STL基础入门】list基本使用

这篇具有很好参考价值的文章主要介绍了【C++STL基础入门】list基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

STL(Standard Template Library)是C++标准库的一个重要组成部分,提供了一套丰富的数据结构和算法,可以大大简化C++程序的开发过程。其中,list容器是STL提供的一种双向链表实现的数据结构,具有高效的插入和删除操作,适用于需要频繁插入和删除元素的场景。本文将介绍list容器的基本使用方法,包括头文件的引入、定义和构造函数、属性函数以及运算符和算法的示例代码。


一、list简介

1.1 list是什么

STL(标准模板库)的list是C++中的一种数据结构,用于存储和操作链表。链表是一种动态数据结构,与数组不同,链表的元素在内存中不是连续存储的,而是通过指针连接起来。

list可以存储任意类型的数据,并提供了一系列方法来对链表进行操作,如在链表头部或尾部插入/删除元素,以及在任意位置插入/删除元素等。它还支持双向迭代器,可以方便地遍历链表的元素。

使用list的好处是,它在插入和删除元素时效率很高,因为只需要调整指针的指向即可,不需要像数组一样移动其他元素。此外,list的大小可以根据需要自由扩展,并且不会产生内存碎片。

总之,STL的list是一种用于存储和操作链表的数据结构,通过指针将元素连接起来,提供了高效的插入和删除操作,适用于需要频繁插入和删除元素的场景。

1.2 list的头文件

#include <list>

【C++STL基础入门】list基本使用,C++STL,c++,C,开发语言,软件工程,后端,数据结构,stl

二、list

2.1 定义对象

list<类型> 名称;

2.2 list构造函数

无参构造函数。创建一个空的"list"对象。

示例代码:
﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥cpp

#include <iostream>
#include <list>

int main() {
    std::list<int> myList;  // 创建一个空的int类型链表
    return 0;
}

﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥

【C++STL基础入门】list基本使用,C++STL,c++,C,开发语言,软件工程,后端,数据结构,stl

  1. “list(size_type _Count)”: 构造具有指定元素数量的"list"对象。

参数:

  • “_Count”: 要创建的链表中元素的数量。

示例代码:
﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥cpp

#include <iostream>
#include <list>

int main() {
    std::list<int> myList(5);  // 创建一个包含5个默认值为0的int类型元素的链表
    return 0;
}

﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥
【C++STL基础入门】list基本使用,C++STL,c++,C,开发语言,软件工程,后端,数据结构,stl

  1. “list(size_type _Count, const Type& _Val)”: 构造具有指定元素数量和初始值的"list"对象。

参数:

  • “_Count”: 要创建的链表中元素的数量。
  • “_Val”: 初始化链表元素的值。

示例代码:
﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥cpp

#include <iostream>
#include <list>

int main() {
    std::list<int> myList(3, 10);  // 创建一个包含3个值为10的int类型元素的链表
    return 0;
}

﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥
【C++STL基础入门】list基本使用,C++STL,c++,C,开发语言,软件工程,后端,数据结构,stl

  1. “list(InputIterator _First, InputIterator _Last)”: 构造一个包含给定范围内元素的"list"对象。

参数:

  • “_First”: 范围的起始迭代器。
  • “_Last”: 范围的结束迭代器。

示例代码:
﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥cpp

#include <iostream>
#include <list>
#include <vector>

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5};
    std::list<int> myList(myVector.begin(), myVector.end());  // 使用vector中的元素构造一个新的链表
    return 0;
}

【C++STL基础入门】list基本使用,C++STL,c++,C,开发语言,软件工程,后端,数据结构,stl

﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥

以上示例展示了不同构造函数的使用方法,可以根据实际需求选择适合的构造函数来创建"list"对象。

2.3 list的属性函数

  1. “size()”: 用于返回"list"中元素的数量。

示例代码:
﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥cpp

#include <iostream>
#include <list>

int main() {
    std::list<int> myList = {1, 2, 3, 4, 5};
    std::cout << "Size of myList: " << myList.size() << std::endl;  // 输出链表中元素的数量
    return 0;
}

【C++STL基础入门】list基本使用,C++STL,c++,C,开发语言,软件工程,后端,数据结构,stl

﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥

  1. “resize()”: 用于改变"list"的大小。

参数:

  • “new_size”: 新的大小。
  • “value” (可选): 可以指定一个值,用于在扩大大小时在尾部添加的新元素的初始值。

示例代码:
﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥cpp

#include <iostream>
#include <list>

int main() {
    std::list<int> myList = {1, 2, 3};
    myList.resize(5);  // 将链表的大小调整为5,默认填充0
    std::cout << "New size of myList: " << myList.size() << std::endl;
    
    myList.resize(8, 10);  // 将链表的大小调整为8,并在尾部填充值为10的元素
    std::cout << "New size of myList: " << myList.size() << std::endl;

    return 0;
}

【C++STL基础入门】list基本使用,C++STL,c++,C,开发语言,软件工程,后端,数据结构,stl

﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥

  1. “empty()”: 用于检查"list"是否为空,即判断链表中是否没有元素。

示例代码:
﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥cpp

#include <iostream>
#include <list>

int main() {
    std::list<int> myList;
    if (myList.empty()) {
        std::cout << "myList is empty." << std::endl;
    } else {
        std::cout << "myList is not empty." << std::endl;
    }
    return 0;
}

【C++STL基础入门】list基本使用,C++STL,c++,C,开发语言,软件工程,后端,数据结构,stl

﹤- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ﹥

以上示例展示了"size()"、"resize()"和"empty()"函数的使用方法,可以根据需求使用这些函数来获取链表的大小、调整链表的大小以及检查链表是否为空。


总结

本文介绍了C++ STL的list容器的基本使用方法。通过引入头文件、定义和构造函数、属性函数以及运算符和算法的示例代码,我们可以发现list容器的灵活性和高效性,适用于频繁插入和删除元素的场景。使用list容器可以简化C++程序的开发过程,并提高效率。

希望本文能够帮助读者理解list容器的基本使用方法,以及它在实际编程中的作用和优势。如果有任何疑问,请随时提问。文章来源地址https://www.toymoban.com/news/detail-725998.html

到了这里,关于【C++STL基础入门】list基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++ STL】 list 基础知识

    本篇将学习 list 的基础知识 🕺作者: 主页

    2024年02月05日
    浏览(54)
  • C++基础(13)——STL(stack、queue、list)

    本文主要介绍C++中STL中的stack、queue和list容器 栈中只有顶端元素才可以被外界调用,因此栈不允许有遍历的行为,其中string、vector、deque都可以遍历 队列中队头出数据,队尾进数据,且和栈一样不允许有遍历操作 queue容器装入自定义数据类型数据 链表由一系列的结点组成,结

    2024年02月10日
    浏览(40)
  • “C++基础入门指南:了解语言特性和基本语法”

    C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式 等。熟悉C语言之后,对C++学习有一定的帮助 工作之后,看谁的技术牛不牛逼,不用看谁写出多牛逼的代码,就代码风格扫一眼,立刻就能看出来是正规军还是野生的程序员。代码的风

    2024年02月16日
    浏览(40)
  • C++入门之stl六大组件--List源码深度剖析及模拟实现

    文章目录 前言 一、List源码阅读 二、List常用接口模拟实现 1.定义一个list节点 2.实现一个迭代器 2.2const迭代器 3.定义一个链表,以及实现链表的常用接口 三、List和Vector 总结 本文中出现的模拟实现经过本地vs测试无误,文件已上传gitee,地址:list: 模仿实现stl的list - Gitee.com 首

    2024年02月13日
    浏览(51)
  • 【STL】list的使用

    学习C++途中自然绕不过STL,在这个系列文章之中 我们讲了string的使用和string的模拟实现,以及vector的使用、vector的模拟实现。 感兴趣的可以翻翻看。 目录 系列文章 前言 默认成员函数 构造函数 拷贝构造 赋值重载 迭代器 容量查询 数据访问 数据修改 assign 头插头删尾插尾删

    2024年02月06日
    浏览(66)
  • [STL]list使用介绍

    注:本文测试环境是visual studio2019。 list是可以在常量时间内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。 list与

    2024年02月15日
    浏览(56)
  • 易语言软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作

    随着信息技术的不断发展,易语言软件定制开发已成为许多公司的一项重要业务。本文将探讨如何利用易语言承接软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作。 一、易语言概述 易语言是一种简单易学的编程语言,它采用中文编程,让不会英文的初

    2024年02月08日
    浏览(81)
  • STL好难(4):list的使用

    和列表很像 点击这里查看 list 的官方文档 list类似数据结构中的 链表 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且 该容器可以前后双向迭代。 2. list的底层是双向链表结构 ,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指

    2024年02月13日
    浏览(58)
  • C++STL----list的使用

    list是一种可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以 前后双向迭代 。 list的 底层是带头双向链表 ,带头双向链表中每个元素存储在独立结点当中,在结点中通过指针指向其前一个元素和后一个元素。 list与forward_list非常相似,最主要的不同

    2024年02月07日
    浏览(493)
  • 【C++】STL——list介绍及使用

    🚀 作者简介:一名在后端领域学习,并渴望能够学有所成的追梦人。 🚁 个人主页:不 良 🔥 系列专栏:🛸C++  🛹Linux 📕 学习格言:博观而约取,厚积而薄发 🌹 欢迎进来的小伙伴,如果小伙伴们在学习的过程中,发现有需要纠正的地方,烦请指正,希望能够与诸君一同

    2024年02月12日
    浏览(111)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包