C++学习第二十二课:STL映射类的深入解析

在这里插入图片描述

C++学习第二十二课:STL映射类的深入解析

在C++标准模板库(STL)中,映射类(std::mapstd::multimap)是用来存储关联数据的容器。与集合类不同,映射类中的每个元素都是一个键值对(key-value pair),其中键用于保持元素的唯一性和排序。本课将详细介绍STL映射类的使用,并通过示例代码展示其功能。

1. 映射类概述

映射类容器存储键值对,允许通过键快速查找、插入和删除元素。

示例代码
#include <map>

std::map<int, std::string> capitalCities;
capitalCities[1] = "Beijing";
capitalCities[2] = "New Delhi";

2. 初始化映射

映射可以初始化为一个空容器,或者使用键值对列表进行初始化。

示例代码
std::map<int, std::string> capitals = {{1, "Beijing"}, {2, "New Delhi"}};

3. 访问和修改元素

通过键访问和修改映射中的元素。

示例代码
std::string& capital = capitals[1]; // 获取键为1的元素的引用
capital += " (China)";

4. 添加元素

使用下标操作符[]insert函数向映射中添加元素。

示例代码
capitalCities.insert({3, "Tokyo"});

5. 移除元素

使用erase函数从映射中移除元素。

示例代码
auto it = capitalCities.find(2);
if (it != capitalCities.end()) {
    capitalCities.erase(it); // 移除键为2的元素
}

6. 映射迭代器

使用迭代器遍历映射中的所有元素。

示例代码
for (const auto& pair : capitalCities) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}

7. 映射的键值查找

使用find函数查找特定键的元素。

示例代码
auto it = capitalCities.find(3);
if (it != capitalCities.end()) {
    std::cout << "Found: " << it->second << std::endl;
}

8. 映射的大小和容量

使用sizemax_size函数获取映射的大小和最大容量。

示例代码
std::size_t size = capitalCities.size();

9. std::multimap

std::multimap允许键的重复,存储多个具有相同键的元素。

示例代码
#include <multimap>

std::multimap<std::string, int> scores;
scores.insert({"Alice", 90});
scores.insert({"Alice", 95});

10. 映射的排序

映射类容器中的元素按照键的顺序自动排序。

示例代码
std::map<char, int> freq;
// ... 填充freq ...
for (const auto& pair : freq) {
    std::cout << pair.first << " appears " << pair.second << " times" << std::endl;
}

结语

通过本课的学习,你深入了解了STL中的映射类容器,包括std::mapstd::multimap,以及它们的初始化、元素访问、添加和移除元素、迭代器使用、内存管理、异常安全性、实际应用、线程安全性和性能考量。

映射类容器是C++中处理键值对数据的强大工具,它们在需要快速查找和存储关联数据的场景下非常有用。掌握映射类容器的使用对于编写高效、安全、可维护的C++程序至关重要。

相关推荐

  1. C++ 判断语句深入

    2024-05-11 05:52:03       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 05:52:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 05:52:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 05:52:03       87 阅读
  4. Python语言-面向对象

    2024-05-11 05:52:03       96 阅读

热门阅读

  1. Linux-解压缩文件命令(gzip、zip、unzip、tar、jar)

    2024-05-11 05:52:03       34 阅读
  2. 设计模式——享元模式(Flyweight)

    2024-05-11 05:52:03       35 阅读
  3. C 标准库 - <stdlib.h>

    2024-05-11 05:52:03       30 阅读
  4. ~MAY~

    2024-05-11 05:52:03       31 阅读
  5. Python注释

    2024-05-11 05:52:03       29 阅读
  6. 006 springCloudAlibaba seata

    2024-05-11 05:52:03       24 阅读
  7. 2、TS中的基础讲解

    2024-05-11 05:52:03       29 阅读
  8. Transformer优化加速--xformers

    2024-05-11 05:52:03       32 阅读