浅谈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日

相关文章

  • VSCode搭建STM32开发环境的方法步骤

    下面我将详细讲解“VSCode搭建STM32开发环境的方法步骤”。本攻略主要分为以下四个步骤:安装基础工具、配置VSCode环境、安装STM32插件和调试程序。 步骤一:安装基础工具 在搭建STM32开发环境前,我们需要安装以下几个工具: 集成开发环境(IDE):STM32CubeIDE、Keil、IAR、System Workbench for STM32…

    C 2023年5月22日
    00
  • 关于C语言程序的内存分配的入门知识学习

    关于C语言程序的内存分配的入门知识,要了解到以下内容: 1. 内存的基本概念 计算机是由中央处理器(CPU)、内存和硬盘等电子装置组成的。内存是程序运行时存储数据和代码的临时存储器,程序每次运行都需要占用内存,当程序结束后就会释放相应的内存。 2. 栈与堆的比较 在程序中,常见的内存分配方式有栈和堆两种,它们都是存储数据的区域,但其具体的使用方式有所不同。-…

    C 2023年5月23日
    00
  • 详解dll动态库的开发与调用及文件的读写小程序

    详解dll动态库的开发与调用及文件的读写小程序 动态链接库(DLL)是一种非常重要的可执行文件类型,它允许各种应用程序在加载时动态地调用它所包含的函数或者资源。本文将详细说明如何开发和调用DLL动态链接库,并提供文件读写小程序的示例。 DLL动态库开发 1. DLL的定义 首先,我们要定义我们的DLL动态链接库,用到的头文件如下: #ifndef _MY_D…

    C 2023年5月23日
    00
  • C语言实现超市计价收款系统

    C语言实现超市计价收款系统攻略 简介 本文将介绍如何使用C语言实现一个简单的超市计价收款系统。该系统将能够记录商品信息、价格以及计算顾客的购物总价等功能。 主要步骤 以下是实现该系统的主要步骤: 定义结构体 定义商品信息的结构体,包括商品名、价格等信息。例如: struct goods { char name[20]; int price; int num;…

    C 2023年5月23日
    00
  • JS实现简单的二元方程计算器功能示例

    下面我会详细讲解如何实现一个简单的二元方程计算器功能。 1.需求分析 首先,我们需要明确我们要实现什么功能。这个简单的二元方程计算器要能够接收用户输入的两个数值,然后进行加、减、乘、除运算,并将计算结果输出给用户。 2.实现步骤 2.1 创建HTML文件和JS文件 首先,我们需要创建一个HTML文件和一个JS文件。HTML文件用来布局和展示界面,JS文件用来…

    C 2023年5月22日
    00
  • C++14新特性的所有知识点全在这

    C++14新特性的所有知识点全在这 1. 简介 C++14是C++11的后继版本,引入了许多新的特性和性能改进。这些新特性使得C++14更容易使用和更加安全。本文将会介绍C++14的所有知识点。 2. C++14的新特性 2.1 通用表达式 通用表达式是C++14的一个重要特性,它提供了一种新的语法来实现编译时计算。通用表达式使得编程人员可以在编译时期计算变…

    C 2023年5月23日
    00
  • C语言代码实现简单扫雷小游戏

    下面我会详细讲解“C语言代码实现简单扫雷小游戏”的完整攻略。 1. 游戏规则 扫雷是一款益智小游戏,其主要规则如下: 游戏区域是一个由方块组成的网格,每个方块是未被挖开的地雷、数字或空白格子。 玩家需要通过揭示方块,来确定地雷的位置。 如果玩家揭示的方块是地雷,游戏失败。 如果玩家揭示的方块是数字,表示周围八个方块中地雷的数量。 如果玩家揭示的方块是空白格子…

    C 2023年5月22日
    00
  • MathWorks Matlab R2020a(V9.8)密钥安装+永久激活详细教程(含下载)

    MathWorks Matlab R2020a(V9.8)密钥安装+永久激活详细教程(含下载) 一、下载Matlab R2020a Matlab官网提供了免费试用30天的版本,但如果需要永久性的使用,则需要购买正版。在下载前,请确保你购买了Matlab R2020a正版授权并获得了有效的密钥。 在Matlab官网中下载软件,下载链接为 https://www…

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