浅谈c++ vector和map的遍历和删除对象

浅谈c++ vector和map的遍历和删除对象

概述

在c++的stl中,vector和map是常用的数据结构。它们都有遍历和删除对象的需求,下面将详细介绍如何使用c++ vector和map完成遍历和删除对象的操作。

vector的遍历和删除元素

遍历vector

遍历vector可以使用迭代器,得到vector的每个元素。

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    for (auto i = vec.begin(); i != vec.end(); i++) {
        cout << *i << " ";
    }
    cout << endl;
    return 0;
}

结果为:

1 2 3 4 5

删除元素

在vector中删除元素可以使用erase()函数。对于vector中的任何元素进行删除都会导致后面所有元素的位置向前移动,所以vector的删除操作开销很大。

删除vector中的一个元素,可以使用以下代码:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    vec.erase(vec.begin() + 2);
    for (auto i = vec.begin(); i != vec.end(); i++) {
        cout << *i << " ";
    }
    cout << endl;
    return 0;
}

结果为:

1 2 4 5

这里我们删除了vector中的第三个元素,即数字3。

map的遍历和删除元素

遍历map

在c++中,map是关联式容器,它存储了“关键字--值”对,所以map的遍历就是遍历这些“关键字--值”对。

遍历map也可以使用迭代器,得到map的每个“关键字--值”对。注意,map中的元素是按“关键字”排序的。

#include <iostream>
#include <map>

using namespace std;

int main() {
    map<string, int> mp;
    mp["apple"] = 1;
    mp["orange"] = 2;
    mp["banana"] = 3;

    for (auto i = mp.begin(); i != mp.end(); i++) {
        cout << i->first << " " << i->second << endl;
    }

    return 0;
}

结果为:

apple 1
banana 3
orange 2

删除元素

在map中删除元素也可以使用erase()函数。删除一个元素会导致所有后面的元素的位置向前移动。删除一个值的大小是O(logn)的,删除整个map的大小是O(n)的。

以下代码演示如何使用erase()函数删除map中的一个元素。

#include <iostream>
#include <map>

using namespace std;

int main() {
    map<string, int> mp;
    mp["apple"] = 1;
    mp["orange"] = 2;
    mp["banana"] = 3;

    mp.erase("orange");

    for (auto i = mp.begin(); i != mp.end(); i++) {
        cout << i->first << " " << i->second << endl;
    }

    return 0;
}

结果为:

apple 1
banana 3

这里我们删除了一个关键字为"orange"的“关键字--值”对。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈c++ vector和map的遍历和删除对象 - Python技术站

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

相关文章

  • C语言中打印特殊图案的实现代码

    下面是详细讲解“C语言中打印特殊图案的实现代码”的完整攻略。 1. 基本概念 在C语言中,我们可以通过使用转义字符来实现打印特殊字符或图案的功能。转义字符是以反斜杠(\)开头的一种特殊字符,它们表示某些无法输入的字符,如换行符、制表符、回车符等。 2. 实现代码 2.1 示例一:打印三角形 以下代码可以打印一个由星号组成的三角形,可以通过连续打印多行来实现。…

    C 2023年5月24日
    00
  • C语言学生成绩管理系统源码

    C语言学生成绩管理系统源码完整攻略 源码下载 首先,我们需要从Github上下载C语言学生成绩管理系统的源代码。在Github上搜索关键词C语言学生成绩管理系统即可找到相应的项目。 下载完成后,我们可以得到以下几个文件: main.c:程序主函数 student.h:定义了student结构体以及相关函数的头文件 student.c:实现了student结构…

    C 2023年5月23日
    00
  • json的定义、标准格式及json字符串检验

    JSON是JavaScript对象表示法(JavaScript Object Notation)的缩写,是一种轻量级的数据交换格式。 JSON的定义 JSON是一种用于数据交换的文本格式,和XML一样,JSON也是一种纯文本格式,可以轻松地在网络中传递。JSON使用JavaScript语法来描述数据,但是JSON仅仅是一种数据格式,不是一种编程语言,所以它是…

    C 2023年5月23日
    00
  • JSON基础介绍与详细用法

    JSON基础介绍与详细用法 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,可以轻松地在不同语言和平台之间进行数据传输和交换。它的基本语法规则和JavaScript的语法规则类似,因此具有良好的可读性和可编写性。它采用键值对的形式进行数据存储,并支持嵌套、数组、对象等复杂数据结构。 在JSON中,…

    C 2023年5月23日
    00
  • c语言没有try catch的替代方案

    下面是详细讲解C语言没有try catch的替代方案的完整攻略。 1. C语言中的错误处理 在C语言中,可用来处理错误的方式有两种,分别是: 1.1 错误码 使用错误码(error code)的方式来表示函数的返回值,若返回值为0,则表示执行成功,否则返回的是对应的错误码。调用函数时,需要根据返回值进行错误处理。比如,在读取文件时,如果读取成功,返回0;否则…

    C 2023年5月23日
    00
  • 详解关于JSON.parse()和JSON.stringify()的性能小测试

    关于“详解关于JSON.parse()和JSON.stringify()的性能小测试”攻略,以下是完整的说明: 标题 1. 概述 在JavaScript中,JSON.parse()和JSON.stringify()是两个常用的方法,前者将JSON格式的字符串转换为JavaScript对象,后者则是将JavaScript对象转换为JSON格式的字符串。同时,在…

    C 2023年5月23日
    00
  • 深入解析C语言中常数的数据类型

    深入解析C语言中常数的数据类型 在C语言中,常数的数据类型也是十分重要的。正确理解常数的类型、范围和精度对于编写高质量的程序至关重要。在本文中,我们将深入探讨C语言中常数的数据类型,并提供两个示例以帮助理解。 整数常数 在C语言中,整数常数可以表示为十进制、八进制或十六进制形式。整数常数的类型(即有符号或无符号)和大小(即占用的位数)取决于它的值和后缀。 举…

    C 2023年5月23日
    00
  • 乐玩2C后盖怎么打开 TCL乐玩2C手机打开后盖方法图解

    TCL乐玩2C手机后盖打开方法 前言 TCL乐玩2C是一款较为受欢迎的手机,但是许多用户可能都会遇到不知道如何打开后盖的问题。在此,本文将详细讲解乐玩2C手机如何打开后盖。 注意事项 在操作前请确保手机已关闭,并且拆卸后盖可能会对手机造成损害,请谨慎操作。建议您在比较熟悉的环境下进行拆卸。 操作步骤 步骤1:准备工具和材料 你需要先准备一把打开手机后盖的工具…

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