C++中list的使用方法及常用list操作总结

yizhihongxing

C++中list的使用方法及常用list操作总结

在C++中,list是一个非常常用的STL容器,它能够动态地存储数据,并且对数据的访问、插入、删除等操作都非常高效。本篇文章将介绍C++中list的使用方法及常用list操作的总结。

1. list的定义

在使用list之前,需要包含头文件<list>。list的定义方式如下:

#include <list>
using namespace std;
list<int> myList;

其中,list<int>表示定义了一个存储int类型数据的list容器,myList就是定义的list对象。

2. list的基本操作

2.1 插入操作

  • 在list的末尾插入一个元素:
myList.push_back(10);
  • 在list的头部插入一个元素:
myList.push_front(20);
  • 在list的指定位置插入一个元素:
myList.insert(myList.begin(), 30);

2.2 删除操作

  • 删除list末尾的元素:
myList.pop_back();
  • 删除list头部的元素:
myList.pop_front();
  • 删除list中指定位置的元素:
myList.erase(myList.begin());

2.3 访问操作

  • 获取list正向迭代器的首元素:
int first = *myList.begin();
  • 获取list正向迭代器的尾元素:
int last = *(--myList.end());
  • 遍历list中的所有元素:
for (auto iter = myList.begin(); iter != myList.end(); ++iter) {
    cout << *iter << " ";
}

2.4 修改操作

  • 修改list中指定位置的元素:
*myList.begin() = 40;

3. list常用函数总结

3.1 容量相关函数

  • size():返回list中元素的个数。
  • empty():如果list为空,则返回true。
  • max_size():返回list容器所能容纳的最大元素个数。

3.2 插入操作相关函数

  • push_back(val):在list末尾插入一个元素val
  • push_front(val):在list头部插入一个元素val
  • insert(pos, val):在list的指定位置pos插入一个元素val
  • insert(pos, n, val):在list的指定位置pos插入n个值为val的元素。
  • insert(pos, first, last):在list的指定位置pos插入另一个list[first, last)

3.3 删除操作相关函数

  • pop_back():删除list末尾的元素。
  • pop_front():删除list头部的元素。
  • erase(pos):删除list中指定位置pos的元素。
  • erase(first, last):删除list中从firstlast之间的元素。

3.4 访问操作相关函数

  • front():返回list的头元素。
  • back():返回list的尾元素。

3.5 修改操作相关函数

  • assign(first, last):清空list中原有元素,将[first, last)内的元素赋值给list。
  • assign(n, val):清空list中原有元素,将n个值为val的元素赋值给list。

4. 示例说明

4.1 list的插入操作示例

本例子说明如何插入元素到list中,并使用迭代器遍历结果。

#include <iostream>
#include <list>

using namespace std;

int main() {
    list<int> myList;
    myList.push_back(100);
    myList.push_back(200);
    myList.push_front(50);
    myList.insert(myList.begin(), 10);
    myList.insert(myList.end(), 300);

    // 遍历list
    for (auto iter = myList.begin(); iter != myList.end(); ++iter) {
        cout << *iter << " ";
    }
    cout << endl;

    return 0;
}

输出结果为:

10 50 100 200 300

4.2 list的删除操作示例

本例子说明如何删除list中的元素,并使用迭代器遍历结果。

#include <iostream>
#include <list>

using namespace std;

int main() {
    list<int> myList;
    myList.push_back(100);
    myList.push_back(200);
    myList.push_back(300);

    // 删除list中第二个元素
    auto iter = myList.begin();
    advance(iter, 1);
    myList.erase(iter);

    // 遍历list
    for (auto iter = myList.begin(); iter != myList.end(); ++iter) {
        cout << *iter << " ";
    }
    cout << endl;

    return 0;
}

输出结果为:

100 300

5. 总结

本篇文章介绍了C++中list的定义、基本操作和常用函数等知识点,并给出了两个示例用于说明list的插入、删除操作。希望本文能够帮助大家更好地理解和使用list。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中list的使用方法及常用list操作总结 - Python技术站

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

相关文章

  • jquery和bootstrap

    jQuery和Bootstrap jQuery和Bootstrap 都是非常受欢迎的前端开发库。jQuery是一个JavaScript库,它通过对文档对象模型(Document Object Model,DOM)的操作,使得JavaScript编程更为方便。Bootstrap是由Twitter公司开发的一个开源前端框架,提供了HTML、CSS和JavaScr…

    其他 2023年3月29日
    00
  • Java getResource()如何获取class文件目录位置

    Java中的getResource()方法用于从类路径中获取资源,获取资源的路径可以是绝对路径,也可以是相对路径。方法的返回值是一个URL对象。 下面我们来讲解如何使用getResource()方法获取class文件目录位置: 获取class文件所在目录绝对路径 获取class文件所在目录的绝对路径可以使用以下代码: URL url = xxx.class.…

    other 2023年6月27日
    00
  • vue中Axios的封装与API接口的管理详解

    Vue中Axios的封装与API接口的管理详解 在Vue项目中,使用Axios进行API请求是比较常见的方法,但是在实际开发过程中,如果不进行封装和管理,会出现以下问题: 在多处代码中重复使用相同的Axios配置。 每次请求都需要手动编写URL、参数、请求方式等信息,难以管理。 当后台API接口发生变化时,需要修改所有使用该接口的代码。 因此,对Axios进…

    other 2023年6月25日
    00
  • Win10补丁KB5004237今日发布 附更新日志及下载地址

    Win10补丁KB5004237今日发布 附更新日志及下载地址攻略 今天,微软发布了Win10补丁KB5004237,这是一个重要的更新,修复了一些安全漏洞和改进了系统的稳定性。本攻略将详细介绍如何获取该补丁以及如何安装它。 步骤1:检查系统版本 在开始之前,首先需要检查你的系统版本,以确定是否需要安装该补丁。请按照以下步骤进行操作: 打开“设置”应用程序。…

    other 2023年8月4日
    00
  • antd upload上传组件如何获取服务端返回数据

    对于antd的上传组件,根据官方文档的说明,上传成功后会自动解析服务端返回的数据,并将其设置为上传组件的fileList属性的一项。但有时候,我们需要手动获取服务端返回的数据,这时候可以利用 antd 的customRequest属性和 Promise 对象实现。 customRequest属性用于自定义上传行为,可以接收一个函数作为参数,该函数会在上传时被…

    other 2023年6月27日
    00
  • ios8.0固件下载 苹果iOS8.0 Beta2版固件官方及网盘下载地址

    iOS 8.0固件下载攻略 苹果iOS 8.0是一款备受期待的操作系统版本,本攻略将为您提供iOS 8.0 Beta2版固件的官方及网盘下载地址,并详细讲解下载过程。 步骤一:访问官方网站 首先,您需要访问苹果官方网站以获取iOS 8.0 Beta2版固件的下载地址。请按照以下步骤进行操作: 打开您的浏览器,并在地址栏中输入苹果官方网站的URL:https:…

    other 2023年8月4日
    00
  • 腾讯QQ6.5 v12945 正式版发布(附官方下载地址)

    腾讯QQ6.5 v12945 正式版发布攻略 介绍 腾讯QQ6.5 v12945 正式版是腾讯公司最新发布的QQ即时通讯软件版本。本攻略将详细介绍如何下载、安装和使用该版本的QQ,并提供两个示例说明。 下载 你可以通过以下步骤下载腾讯QQ6.5 v12945 正式版: 访问腾讯QQ官方网站:https://im.qq.com/ 在官方网站首页,找到并点击“下…

    other 2023年8月3日
    00
  • Java面向对象之类的继承介绍

    Java面向对象之类的继承介绍 一、概述 Java作为一门面向对象的编程语言,继承(Inheritance)是其面向对象编程的基石之一。继承是指在一个类的基础上,衍生出一个新的类,新的类继承了原有类的属性和方法。 二、继承的语法 Java中继承的语法如下: class ChildClass extends ParentClass { // 子类的其他属性和方…

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