C++ STL入门教程(2) list双向链表使用方法(附程序代码)

  1. 概述

STL是一组C++标准程序库,提供了丰富的组件,包括容器、迭代器、算法、函数对象等等。其中STL容器中list是一种双向链表结构。本教程中将详细讲解如何使用C++的STL容器list。

  1. list容器的基本声明

list容器属于C++ STL中的一种容器,因此在使用时需要包含头文件#include<list>。list容器的声明方式如下:

list<T> lst;

其中,T代表list容器中存储的元素类型,可以是基本数据类型、结构体、类等各种数据类型。

  1. list容器的基本操作

a. 插入元素

list容器支持在表头和表尾插入元素,其中函数的名称分别为push_frontpush_back。例如:

list<int> lst;
lst.push_front(1);
lst.push_back(2);

这个例子中,首先创建了一个空的list容器lst,然后使用push_front方法在lst的表头插入了元素1,再使用push_back方法在lst的表尾插入了元素2。

b. 删除元素

list容器也支持删除元素操作,其中包括pop_frontpop_back方法,分别用于删除表头和表尾的元素。例如:

list<int> lst;
lst.push_back(1);
lst.push_back(2);
lst.pop_back();

这个例子中,首先创建了一个list容器lst,并使用push_back方法向其中插入了两个元素,然后使用pop_back方法删除了最后一个元素。

c. 访问元素

list容器支持通过frontback方法访问表头和表尾的元素。例如:

list<int> lst;
lst.push_back(1);
lst.push_back(2);
cout<<lst.front()<<endl;
cout<<lst.back()<<endl;

这个例子中,首先创建了一个list容器lst,并使用push_back方法向其中插入了两个元素,然后使用frontback方法访问了最前和最后的元素。

d. 查找元素

list容器也支持查找元素,其中包括findcount方法,分别用于查找元素和计数。例如:

list<int> lst;
lst.push_back(1);
lst.push_back(2);
lst.push_back(3);
if (lst.find(2) != lst.end()) {
    cout<<"2 is found in list"<<endl;
}
cout<<"num of 1 in list:"<<lst.count(1)<<endl;

这个例子中,首先创建了一个list容器lst,并使用push_back方法向其中插入了三个元素,然后使用find方法在lst中查找元素2的位置,如果找到则输出“2 is found in list”,接着使用count方法计算lst中元素1的数量,并输出该数量。

  1. list容器的高级操作

a. 反转容器

使用reverse方法可以对list容器进行反转操作。例如:

list<int> lst;
lst.push_back(1);
lst.push_back(2);
lst.push_back(3);
lst.reverse();

这个例子中,首先创建了一个list容器lst,并使用push_back方法向其中插入了三个元素,然后使用reverse方法将lst中的元素进行了反转。

b. 排序容器

使用sort方法可以对list容器进行排序操作。例如:

list<int> lst;
lst.push_back(3);
lst.push_back(2);
lst.push_back(1);
lst.sort();

这个例子中,首先创建了一个list容器lst,并使用push_back方法向其中插入了三个元素,然后使用sort方法将lst中的元素进行了排序操作。

  1. 示例代码
#include <iostream>
#include <list>

using namespace std;

int main() {
    list<int> lst;
    lst.push_front(1);//list头部插入1
    lst.push_back(2);//list尾部插入2
    lst.push_back(3);//list尾部插入3
    lst.pop_front();//list头部弹出元素
    lst.reverse();//list反转操作
    lst.sort();//list排序操作
    for (auto itr = lst.begin(); itr != lst.end(); itr++) {//遍历list容器
        cout << *itr << endl;
    }
    return 0;
}

这个示例代码中,首先创建了一个list容器lst,通过push_frontpush_back方法向其中插入了三个元素1、2、3,然后使用pop_front方法将最前面的元素1从lst中弹出,使用reverse方法对lst进行反转操作,使用sort方法对lst进行排序,最后用beginend方法遍历lst容器,并通过cout方法输出容器中的元素。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ STL入门教程(2) list双向链表使用方法(附程序代码) - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • C 语言基础之C 语言三大语句注意事项

    C 语言是一门被广泛应用的编程语言,它的基础语法并不复杂,但是初学者在使用C语言时,常会遇到一些比较容易犯错的问题,特别是在使用C语言的三大语句的时候。本文将详细介绍C语言三大语句之if语句、for语句和while语句的使用规则和注意事项,并提供相应的示例说明。 一、if语句注意事项 if语句是C语言中最常用的分支结构语句,使用if语句可以让程序进行有条件的…

    C 2023年5月24日
    00
  • C语言基于EasyX库实现有图形界面时钟

    下面详细讲解关于“C语言基于EasyX库实现有图形界面时钟”的完整攻略。 1. 安装EasyX库 首先你需要在本地安装EasyX库,EasyX库是一个图形界面库,支持Win32 API的封装,并且提供一些画图工具函数,可以轻松实现一些基础的图形应用程序。 你可以使用以下两种方式进行安装: 下载EasyX安装包,同时安装Visual Studio,按照Easy…

    C 2023年5月23日
    00
  • C语言实现输入两个数字将其按从小到大输出的方法

    以下是C语言实现输入两个数字将其按从小到大输出的方法的攻略: 步骤一:设置两个变量,输入两个数字 例如: #include <stdio.h> int main() { int a, b; printf("请输入两个整数: "); scanf("%d %d", &a, &b); return…

    C 2023年5月23日
    00
  • C语言银行系统课程设计

    欢迎来到C语言银行系统课程设计攻略。在这篇攻略中,我将为您提供一个完整的设计过程,以帮助您在C语言银行系统课程中大获成功。 确定项目目标 首先,要确定本项目的目标。在这个课程设计项目中,我们需要设计一个银行系统,包括以下功能: 银行账户开户和添加 银行账户存款和取款 银行账户余额查询 设计数据结构 接下来,我们需要设计数据结构,以存储银行系统所需的数据。我们…

    C 2023年5月23日
    00
  • mybatis报错 resultMapException的解决

    下面是关于mybatis报错resultMapException的解决攻略。 问题原因 mybatis的resultMap是将数据库查询结果映射为java对象的一种机制,其最大的优点是可以将复杂、嵌套的查询结果直接映射为java对象,并且smybatis的resultMap可以重用,可以减少代码的冗余。 但是,在实际使用中,可能会遇到mybatis的Resu…

    C 2023年5月22日
    00
  • 编写C语言程序进行进制转换的问题实例

    编写C语言程序进行进制转换的攻略可以分为以下几个步骤: 1. 确定需要实现的进制转换 要进行进制转换,首先需要确定要转换的进制类型,如十进制、二进制、八进制、十六进制等。可以根据需求选择要转换的进制类型。 2. 设计算法并实现程序代码 经过确定要转换的进制类型,就需要设计转换的算法。通常,将一个进制的数转换为另一个进制的数可以借助中间进制完成,例如将二进制数…

    C 2023年5月23日
    00
  • C++实现职工工资管理系统

    C++实现职工工资管理系统攻略 1. 系统需求分析 在开发职工工资管理系统前,我们需要先进行需求分析: 功能需求:该系统主要功能为实现职工的基本信息管理、工资发放和查询功能。 技术需求:采用C++语言实现,要求具备良好的代码结构和可扩展性。 2. 总体设计 系统总体设计包括以下几个部分: 实现一个职工类,用于存储每个职工的基本信息和工资信息。 设计一个管理类…

    C 2023年5月23日
    00
  • C C++ LeetCode题解在二叉树中增加一行示例详解

    C C++ LeetCode题解在二叉树中增加一行示例详解 在二叉树中增加一行的题目通常会让很多人头疼,本文将为大家提供一个详细而完整的攻略,同时提供两条示例说明。 题目描述 给定一个二叉树,根节点为第1层,现在要在第d层插入一个值为v的节点,使得原来的树变成新的树。插入完之后,新节点应该在原来第d层节点的左子树的位置上。 解题思路 一般情况下,我们可以采用…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部