c++ 数据结构map的使用详解

c++ 数据结构map的使用详解

什么是map

map是C++ STL中提供的一种用以存储键值对(key-value)的容器。它能够以平均O(log n)复杂度进行搜索、插入、删除操作,并且保持元素顺序,是一种比较高效的数据结构。

map的基本用法

定义map

定义map需要包含头文件<map>

语法:map<key_type, value_type> m;

示例代码:

#include <map>
using namespace std;

int main() {
    map<int, string> m;
    return 0;
}

定义一个以int为键,以string为值的map

插入元素

插入元素需要使用成员函数insert()

语法:m.insert(make_pair(key, value));

示例代码:

#include <map>
using namespace std;

int main() {
    map<int, string> m;
    m.insert(make_pair(1, "apple"));
    m.insert(make_pair(2, "banana"));
    m.insert(make_pair(3, "orange"));
    return 0;
}

插入三个元素,键分别为1、2、3,值分别为"apple"、"banana"、"orange"。

删除元素

删除元素需要使用成员函数erase()

语法:m.erase(key);

示例代码:

#include <map>
using namespace std;

int main() {
    map<int, string> m;
    m.insert(make_pair(1, "apple"));
    m.insert(make_pair(2, "banana"));
    m.insert(make_pair(3, "orange"));
    m.erase(2);
    return 0;
}

删除键为2的元素。

访问元素

访问元素需要使用[]操作符或at()函数。

示例代码:

#include <map>
#include <iostream>
using namespace std;

int main() {
    map<int, string> m;
    m.insert(make_pair(1, "apple"));
    m.insert(make_pair(2, "banana"));
    m.insert(make_pair(3, "orange"));
    cout << m[2] << endl;
    cout << m.at(2) << endl;
    return 0;
}

访问键为2的元素的值。

遍历元素

遍历元素需要使用迭代器。

示例代码:

#include <map>
#include <iostream>
using namespace std;

int main() {
    map<int, string> m;
    m.insert(make_pair(1, "apple"));
    m.insert(make_pair(2, "banana"));
    m.insert(make_pair(3, "orange"));
    map<int, string>::iterator it;
    for (it = m.begin(); it != m.end(); it++) {
        cout << it->first << ": " << it->second << endl;
    }
    return 0;
}

遍历输出所有元素的键和值。

示例说明

示例1

题目要求:

从键盘上输入n个整数,将它们存储到map中,并输出每个数出现的次数。

示例代码:

#include <map>
#include <iostream>
using namespace std;

int main() {
    map<int, int> m;
    int n, num;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> num;
        if (m.find(num) != m.end()) {
            m[num]++;
        } else {
            m[num] = 1;
        }
    }
    map<int, int>::iterator it;
    for (it = m.begin(); it != m.end(); it++) {
        cout << it->first << ": " << it->second << endl;
    }
    return 0;
}

输入:

8
1 2 3 4 5 1 2 3

输出:

1: 2
2: 2
3: 2
4: 1
5: 1

示例2

题目要求:

给定一个字符串,输出每个字符出现的次数。

示例代码:

#include <map>
#include <iostream>
using namespace std;

int main() {
    map<char, int> m;
    string s;
    getline(cin, s);
    for (int i = 0; i < s.length(); i++) {
        if (m.find(s[i]) != m.end()) {
            m[s[i]]++;
        } else {
            m[s[i]] = 1;
        }
    }
    map<char, int>::iterator it;
    for (it = m.begin(); it != m.end(); it++) {
        cout << it->first << ": " << it->second << endl;
    }
    return 0;
}

输入:

hello, world

输出:

 : 1
,: 1
d: 1
e: 1
h: 1
l: 3
o: 2
r: 1
w: 1

以上是 c++ 数据结构map的使用详解 的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++ 数据结构map的使用详解 - Python技术站

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

相关文章

  • js处理层级数据结构的方法小结

    “JS处理层级数据结构的方法小结”是一篇讲解JavaScript如何处理嵌套数据结构的文章。在现代的web应用中,嵌套结构是非常常见的,比如JSON数据、树形数据等。以下是对该话题的详细讲解: 1. 嵌套数据结构的概念 指的是包含嵌套关系的数据类型,如数组、对象、树形结构、XML文档等。这些类型之间有着固定层级关系,包含多个层次的数据。嵌套数据结构的处理,往…

    数据结构 2023年5月17日
    00
  • 带你了解Java数据结构和算法之哈希表

    带你了解Java数据结构和算法之哈希表 前言 哈希表是一种常用的数据结构,它可以高效地存储和查询数据。在计算机科学领域,哈希表广泛用于实现关联数组(Associative Array)和哈希集合(Hash Set)。本文将带领大家深入了解哈希表数据结构及常用算法实现。 哈希表的原理 哈希表是根据关键码值(Key Value)而直接进行访问的数据结构。也就是说…

    数据结构 2023年5月17日
    00
  • Codeforces Round 866 (Div. 2)

    A. Yura’s New Name 题意: 给出一个仅由_或^组成的字符串,你可以在任意位置添加_或^字符,使得字符串满足:任意字符要么属于^_^的一部分,要么属于^^的一部分。求最少添加的字符数量。 分析: 对于_我们只需处理没有组成^_^的_: ①如果_在首位置且左边没有^则添加^ ②如果_在尾位置且右边没有^则添加^ ③如果_在中间部分且右边没有^则…

    算法与数据结构 2023年4月25日
    00
  • Halcon软件安装与界面简介

      1. 下载Halcon17版本到到本地 2. 双击安装包后 3. 步骤如下     界面分为四大块 1.    Halcon的五个助手 1)    图像采集助手:与相机连接,设定相机参数,采集图像 2)    标定助手:九点标定或是其它的标定,生成标定文件及内参外参,可以将像素单位转换为长度单位 3)    模板匹配助手:画取你想寻找的图像,设定参数,可…

    算法与数据结构 2023年4月19日
    00
  • C语言中数据结构之链式基数排序

    C语言中数据结构之链式基数排序 概述 链式基数排序是基数排序的一种实现方式。基数排序是一种桶排序算法,它通过将需要排序的数据分成多个桶,并且按照一定的顺序将数据从桶中取出来,以达到排序的目的。链式基数排序则使用了链表结构来实现桶的功能。 实现步骤 链式基数排序的实现步骤如下: 申请链表节点数组,并初始化链表头结点数组。链表的数量等于指定的基数,例如10进制的…

    数据结构 2023年5月17日
    00
  • python数据结构学习之实现线性表的顺序

    下面我来详细讲解一下“python数据结构学习之实现线性表的顺序”的完整攻略。 一、线性表的概念介绍 线性表是最基本、最常用的一种数据结构。线性表是由同类型的数据元素构成有序序列的抽象,常用的线性表有顺序表和链表两种结构。 顺序表就是用一段连续的物理空间依次存储一组类型相同的数据元素,同时在存储空间中,逻辑上相邻的两个元素,物理位置也相邻。 二、实现顺序表的…

    数据结构 2023年5月17日
    00
  • Codeforces Round 868 Div 2

    A. A-characteristic (CF 1823 A) 题目大意 要求构造一个仅包含\(1\)和 \(-1\)的长度为 \(n\)的数组 \(a\),使得存在 \(k\)个下标对 \((i, j), i < j\)满足 \(a_i \times a_j = 1\)。 解题思路 当有\(x\)个 \(1\), \(y\)个 \(-1\)时,其满足…

    算法与数据结构 2023年4月30日
    00
  • C++二叉树结构的建立与基本操作

    C++二叉树是一种非常常见的数据结构,同时也是算法中经常使用的一种数据结构。本文将详细讲解C++二叉树的建立和基本操作,包括二叉树的定义、创建、遍历和删除等。 1. 二叉树的定义 二叉树是一种树形结构,每个节点最多只有两个子节点:左子节点和右子节点。树的深度取决于有多少个节点,根节点是最顶端的节点,不再有父节点。节点之间存在一些有天然排序关系且有先后性的关系…

    数据结构 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部