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日

相关文章

  • iOS 9正式版下载地址(iPhone/iPad/iTouch) 附升级教程!

    iOS 9正式版下载地址(iPhone/iPad/iTouch) 附升级教程! iOS 9是苹果公司最新发布的操作系统版本,带来了许多新功能和改进。如果你想下载并升级到iOS 9正式版,下面是详细的攻略。 步骤一:备份数据 在升级之前,强烈建议你备份设备上的所有数据。这样,即使在升级过程中出现问题,你也可以恢复到之前的状态。你可以通过iTunes或iClou…

    other 2023年8月4日
    00
  • 跳槽必备之你设计索引的原则是什么?怎么避免索引失效?

    跳槽必备之你设计索引的原则是什么?怎么避免索引失效? 设计索引的原则 在设计索引时需要遵守以下原则: 索引的选择性越高越好 索引的选择性是指索引中不重复的数据占总数据的比例。当索引选择性越高时,查询效率就越高。所以在设计索引时应该尽可能选择那些选择性高的列进行索引。 尽可能使用最左前缀进行索引 最左前缀指的是索引列的最左边的前缀,优先考虑匹配最左前缀的索引,…

    other 2023年6月26日
    00
  • 详解java中的阻塞队列

    详解Java中的阻塞队列 1. 什么是阻塞队列? 阻塞队列是Java并发编程中的一种数据结构,它具备线程安全的特性,能够在多线程环境中被安全地使用。阻塞队列提供了一种先进先出(FIFO)的数据存储方式,并且在队列为空时,获取元素的操作会被阻塞,直到队列中有可用元素;在队列满时,添加元素的操作会被阻塞,直到队列有可用空间。 2. 阻塞队列的常用实现类 Java…

    other 2023年6月28日
    00
  • 局域网怎么查询哪些ip被占用? Free IP Scanner的使用方法

    局域网怎么查询哪些IP被占用?Free IP Scanner的使用方法 简介 在局域网中,我们经常需要查询哪些IP地址已经被其他设备占用了。Free IP Scanner是一款免费的工具,可以帮助我们快速扫描局域网中的IP地址,并显示哪些IP地址已经被占用。下面是使用Free IP Scanner的详细攻略。 步骤 步骤一:下载和安装Free IP Scan…

    other 2023年7月29日
    00
  • WPS怎么快速生成文件夹? WPS表格和TXT文本生成多个文件夹的教程

    WPS怎么快速生成文件夹,可以通过WPS表格和TXT文本来实现。下面我们来详细讲解如何进行操作。 使用WPS表格批量生成文件夹 打开WPS表格,新建一个空表格。 在第一行第一列输入“名称”,在第一行第二列输入“路径”。 在第二行第一列输入一个文件夹的名称(例如:文件夹1),在第二行第二列输入该文件夹的路径(例如:D:/文件夹1)。 点击第二行第一列的单元格,…

    other 2023年6月26日
    00
  • 部署vmware-vcsa 6.5

    下面是“部署vmware-vcsa 6.5的完整攻略”,包括准备工作、安装vCenter Server Appliance和配置vCenter Server等方面。 准备工作 在部署vmware-vcsa 6.5之前,需要进行以下准备工作: 确认硬件和软件要求; 下载vCenter Server Appliance安装文件; 确认网络设置; 确认DNS设置;…

    other 2023年5月6日
    00
  • C++string函数之strcat_s

    strcat_s是C++中的一个字符串函数,用于将一个字符串追加到另一个字符串的末尾。以下是“C++string函数之strcat_s”的完整攻略: strcat_s函数的语法 strcat_s函数的语法如下: errno_t strcat_s(char* dest, size_t destSize, const char* src); 其中,dest是目标…

    other 2023年5月5日
    00
  • 微信清理存储空间

    微信清理存储空间攻略 微信是一款功能强大的社交应用,但随着使用时间的增长,微信的存储空间可能会变得拥挤。为了解决这个问题,我们可以进行微信清理存储空间的操作。下面是一个详细的攻略,帮助你清理微信存储空间。 步骤一:清理聊天记录 微信的聊天记录是占用存储空间的主要原因之一。你可以按照以下步骤清理聊天记录: 打开微信应用并进入聊天界面。 在聊天界面中,长按需要清…

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