C++之list容器介绍及使用方式

C++之list容器介绍及使用方式

list容器简介

list容器是C++标准库中的一种容器类型,它是一个链表结构,可以方便地进行插入、删除和移动操作。它与数组和向量相比,可以更好地处理元素移动或删除操作。list容器的所有操作都具有良好的时间复杂度,这使得它成为一种优秀的容器类型。

list容器的使用

include头文件

使用list容器需要引入相应的头文件,即:

#include <list>

声明list容器

在使用list容器之前,需要先声明一个list对象,可以使用以下语法:

std::list<元素类型> mylist;

list容器的常用操作

插入元素

使用push_back() 或 push_front() 方法向 list 容器中插入元素,其中 push_back() 将元素插入容器尾部,而 push_front() 则插入容器的头部。

std::list<int> mylist;
mylist.insert(mylist.begin(), 5); // 在 list 容器头部插入元素5
mylist.push_back(10); // 在 list 容器尾部插入元素10

删除元素

使用erase() 方法可以删除 list 容器中的元素,可以删除指定位置处的元素,也可以删除某个范围内的元素。

以下代码演示了如何删除list容器中第一个元素和最后一个元素:

std::list<int> mylist;
mylist.push_back(5);
mylist.push_back(10);
mylist.pop_back(); // 删除最后一个元素
mylist.pop_front(); // 删除第一个元素

访问元素

使用 list 容器提供的 begin() 和 end() 方法可以遍历 list 容器中的元素。如:

std::list<int> mylist;
mylist.push_back(5);
mylist.push_back(10);
for (std::list<int>::iterator it = mylist.begin(); it != mylist.end(); it++) {
    std::cout << *it << std::endl; // 依次输出:5 敲回车 10 敲回车
}

获取属性

list 容器提供了很多属性方法,如 size() 可以返回 list 容器中元素的个数。还可以使用 empty() 方法判断 list 容器是否为空。

std::list<int> mylist;
mylist.push_back(5);
mylist.push_back(10);
std::cout << mylist.size() << std::endl; // 输出 2
std::cout << mylist.empty() << std::endl; // 输出 false

list容器实际应用

实例1:使用list容器存储和排序字符串

以下代码演示了使用 list 容器存储字符串并按字典序排序:

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

bool cmp(const std::string& s1, const std::string& s2) {
    return s1 < s2;
}

int main()
{
    std::list<std::string> mylist {"hello", "world", "cpp", "stl", "algorithm"};
    std::cout << "before sort:" << std::endl;
    for (std::string str : mylist) {
        std::cout << str << " ";
    }
    std::cout << std::endl;
    mylist.sort(cmp);
    std::cout << "after sort:" << std::endl;
    for (std::string str : mylist) {
        std::cout << str << " ";
    }
    std::cout << std::endl;
    return 0;
}

以上代码输出:

before sort:
hello world cpp stl algorithm 
after sort:
algorithm cpp hello stl world 

实例2: 使用list容器实现十进制转二进制

使用 list 容器可以实现将十进制数转为二进制数。循环除以2,将余数从头插入 list 容器中,最后将容器中的元素转成二进制即可。

#include <iostream>
#include <list>

int main() {
    std::list<int> mylist;
    int num = 15;

    while (num > 0) {
        mylist.push_front(num % 2); // 余数入队
        num /= 2; // 除2
    }

    std::cout << "15的二进制数为:";
    for (int digit : mylist) {
        std::cout << digit;
    }
    std::cout << std::endl;

    return 0;
}

以上代码输出:

15的二进制数为:1111

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++之list容器介绍及使用方式 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • spss19软件怎么安装?IBM SPSS Statistics 19安装破解图文详细教程(附代码)

    当您需要安装SPSS19软件时,可以按照以下步骤进行操作: 步骤一:安装准备 下载IBM SPSS Statistics 19软件安装包,并解压缩。 如果电脑上已经安装了旧版SPSS软件,请先卸载旧版SPSS软件。 步骤二:安装软件 打开解压缩后的文件夹,找到”setup.exe”程序,右击选择以管理员权限运行。 选择语言界面,点击“下一步”。 选择 “I …

    other 2023年6月26日
    00
  • css背景图片拉伸以及100%满屏显示

    以下是“CSS背景图片拉伸以及100%满屏显示的完整攻略”的标准markdown格式文本,其中包含了两个示例说明: CSS背景图片拉伸以及100%满屏显示 在Web开发中,背景图片是一个常见的元素。然而,如何让背景图片拉伸以及100%满屏显示是一个常见的问题。本文将介绍如何使用CSS实现背景图片拉伸以及100%满屏显示,包括如何使用background-si…

    other 2023年5月10日
    00
  • sqlserver数据库distinct的用法

    当然,我很乐意为您提供有关“SQL Server数据库DISTINCT的用法”的完整攻略。以下是详细的步骤和两个示例: 1 SQL Server数据库DISTINCT的用法 在SQL Server数据库中,DISTINCT是一种用于去除重复值的关键字。它可以用于SELECT语句中,以便只返回不同的值。 2 使用DISTINCT关键字 以下是使用DISTINC…

    other 2023年5月6日
    00
  • 怎么激活StarUML StarUML激活教程分享 附补丁下载

    怎么激活StarUML StarUML是一款流行的UML建模工具,但是它的免费试用期有限。为了继续使用它的全部功能,您需要激活StarUML。下面是激活StarUML的完整攻略。 步骤一:下载StarUML 首先,您需要下载StarUML的安装程序。您可以在官方网站(https://staruml.io)上找到最新版本的StarUML。根据您的操作系统选择正…

    other 2023年7月27日
    00
  • Mac实用操作技巧(二)

    Mac实用操作技巧(二) 如果你是一个Mac用户,你可能已经看到Mac已经有很好的易用性和用户友好的设计。但是,仍然有很多操作技巧可以帮助你在Mac上的工作效率更高。以下是一些Mac实用的操作技巧,可以帮助你节省时间和增加你的生产力。 1. 使用截图工具 Mac内置的截图工具可以迅速地截取你屏幕上的任意区域。你可以按住Command + Shift + 4,…

    其他 2023年3月28日
    00
  • csc.exe已退出,代码为-532462766

    csc.exe已退出,代码为-532462766 csc.exe是C#编译器,而代码“-532462766”的出现通常代表编译器无法找到对应的程序集。本篇文章将介绍可能导致该问题出现的原因和解决方法。 1. 问题原因 当我们在编写C#程序时使用了依赖的程序集(即其他已编译好的代码),但编译器却无法找到这些程序集时,就会出现“csc.exe已退出,代码为-53…

    其他 2023年3月28日
    00
  • mac下jenkins安装步骤

    Mac下Jenkins安装步骤 Jenkins是一个流行的开源持续集成和持续交付工具,它可以帮助开发人员自动化构建、测试和部署软件。在本攻中,我们将介绍如在Mac上安装Jenkins。 步一:安装Java Jenkins是基于Java开发的,因此安装Jenkins之前,我们需要先安装Java。以下是安装Java的步骤: 打开终端应用程序。 2.行命令来安Ja…

    other 2023年5月9日
    00
  • Java创建多线程的两种方式对比

    Java创建多线程的两种方式对比 在Java中,创建线程有两种常见的方式:继承Thread类和实现Runnable接口。本文将对这两种方式进行详细对比,包括使用场景、优缺点等,并会提供多个示例以便读者更好的理解。 继承Thread类 继承Thread类是创建多线程最常见的方式之一,它主要由以下步骤: 创建一个继承自Thread的类; 重写Thread类的ru…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部