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日

相关文章

  • layui表格checkbox选择全选样式及功能的实例

    layui表格checkbox选择全选样式及功能的实例攻略 1. 引入layui和相关依赖 首先,确保你已经引入了layui和相关的依赖文件。你可以在HTML文件中添加以下代码: <link rel=\"stylesheet\" href=\"https://cdn.staticfile.org/layui/2.5.6/c…

    other 2023年8月3日
    00
  • python版本单链表实现代码

    让我来详细讲解一下“python版本单链表实现代码”的完整攻略。 1. 单链表介绍 单链表是一种数据结构,它由多个节点构成,每个节点包含数据和指向下一个节点的指针。单链表的特点是插入和删除的时间复杂度为O(1),但访问的时间复杂度为O(n)。具体实现时,我们需要定义一个链表节点类Node和链表类LinkedList来表示单链表。 2. 链表节点类Node 链…

    other 2023年6月27日
    00
  • C++字符串类的封装你真的了解吗

    C++字符串类的封装你真的了解吗 C++中的字符串处理一直是一个非常重要的话题。在C++原生的标准库中可以使用string类来进行字符串的处理。但是,虽然string类的使用非常简单,但是其内部的底层实现相当复杂。因此,有些时候需要对string类进行二次封装,使其更加适合我们的实际需求。 为何需要封装字符串类 标准库中的string类很多功能已经足够满足日…

    other 2023年6月25日
    00
  • 电脑可用内存与实际内存不一致问题如何解决?

    解决电脑可用内存与实际内存不一致问题的攻略 问题背景 在使用电脑时,有时候会遇到电脑可用内存与实际内存不一致的问题。这种情况下,电脑显示的可用内存比实际内存要少,导致系统运行缓慢或者出现其他问题。这个问题通常是由于一些软件或者系统设置导致的,但是可以通过一些方法来解决。 攻略步骤 步骤一:检查系统设置 首先,我们需要检查系统设置,确保操作系统正确地识别和使用…

    other 2023年7月31日
    00
  • Android 完全退出应用程序的解决方法

    Android 完全退出应用程序的解决方法 在Android应用程序中,用户通常可以通过点击手机的返回键或者是HOME键来跳出应用程序,但这并不代表该应用程序已经完全退出。这时,该应用程序可能仍在后台运行,需要进一步的处理才能退出完全。下面将介绍两种常见的方法来实现Android应用程序的完全退出。 方法一:使用系统API退出程序 Android系统提供了相…

    other 2023年6月25日
    00
  • 微信小程序canvas实现刮刮乐效果

    微信小程序canvas实现刮刮乐效果攻略 1. 简介 微信小程序提供了Canvas组件,可以用于绘制图形和实现一些特效。本攻略将详细讲解如何使用Canvas组件实现刮刮乐效果。 2. 实现步骤 2.1 创建Canvas组件 首先,在小程序的页面中创建一个Canvas组件,用于绘制刮刮乐效果。在wxml文件中添加以下代码: <canvas id=\&qu…

    other 2023年7月29日
    00
  • win11刚开机cpu就满了怎么办?win11刚开机cpu占用100%解决方案

    针对“win11刚开机cpu就满了怎么办?win11刚开机cpu占用100%解决方案”这个问题,我给出以下完整的攻略: 问题原因分析 首先需要分析导致 CPU 占用率达到100% 的原因,这主要包括以下几个方面: 进程异常:可能有某些进程异常,一直占用 CPU。 资源竞争:某些高 CPU 使用率的程序在同一时间竞争计算机资源。 系统服务异常:有时某些系统服务…

    other 2023年6月26日
    00
  • 解决Linux+Apache服务器URL区分大小写问题

    解决Linux+Apache服务器URL区分大小写问题攻略 在Linux+Apache服务器上,URL区分大小写可能会导致一些问题,例如无法正确访问文件或目录。下面是解决这个问题的完整攻略。 步骤一:编辑Apache配置文件 打开终端,使用文本编辑器(如nano或vi)打开Apache的主配置文件 httpd.conf 或 apache2.conf(具体文件…

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