map和multimap是C++ STL(Standard Template Library)中的关联容器,它们提供键值对的存储和访问。

map是一个有序关联容器,它存储一组键值对,其中每个键都是唯一的。map中的键值对按照键的升序排序。用户可以通过键来访问、修改和删除对应的值。map的实现通常使用平衡二叉搜索树(如红黑树)来保证高效的查找、插入和删除操作。

multimap也是一个有序关联容器,与map不同的是,multimap允许存储多个具有相同键的键值对。multimap中的键值对也按照键的升序排序。用户可以通过键来访问、修改和删除对应的值。multimap的实现通常使用平衡二叉搜索树(如红黑树)来保证高效的查找、插入和删除操作。

下面是map和multimap的一些基本操作:

  1. 插入元素:可以使用insert()函数将一个键值对插入到容器中。
  2. 查找元素:可以使用find()函数通过键来查找对应的元素。
  3. 删除元素:可以使用erase()函数通过键来删除对应的元素。
  4. 遍历元素:可以使用迭代器或C++11中的范围for循环来遍历容器中的元素。
  5. 获取元素个数:可以使用size()函数来获取容器中元素的个数。
  6. 判断容器是否为空:可以使用empty()函数来判断容器是否为空。

需要注意的是,map和multimap中的键是有序的,因此不支持通过下标访问元素的操作。此外,map和multimap中的元素默认按照键的升序排序,也可以通过自定义比较函数来实现其他排序方式。

map的示例代码

 1 #include <iostream>
2 #include <map>
3 using namespace std;
4
5 int main() {
6 // 创建一个map容器,键为字符串,值为整数
7 map<string, int> mymap;
8 // 插入元素
9 mymap.insert(make_pair("apple", 3));
10 mymap.insert(make_pair("banana", 2));
11 mymap.insert(make_pair("orange", 1));
12 // 查找元素
13 auto it = mymap.find("banana");
14 if (it != mymap.end()) {
15 cout << "banana: " << it->second << endl;
16 }
17 // 删除元素
18 mymap.erase("apple");
19 // 遍历元素
20 for (auto& x : mymap) {
21 cout << x.first << ": " << x.second << endl;
22 }
23 // 获取元素个数
24 cout << "size: " << mymap.size() << endl;
25 // 判断容器是否为空
26 cout << "empty: " << (mymap.empty() ? "true" : "false") << endl;
27 return 0;
28 }

multimap的示例代码

 1 #include <iostream>
2 #include <map>
3 #include <string>
4 #include <vector>
5
6 int main() {
7 std::multimap<int, std::string, std::greater<int>> students;
8
9 // 添加学生
10 students.insert(std::make_pair(90, "Alice"));
11 students.insert(std::make_pair(85, "Bob"));
12 students.insert(std::make_pair(95, "Charlie"));
13 students.insert(std::make_pair(80, "David"));
14 students.insert(std::make_pair(95, "Eve"));
15
16 // 输出学生列表
17 std::cout << "Students:\n";
18 for (const auto& student : students) {
19 std::cout << student.second << " (" << student.first << ")\n";
20 }
21
22 return 0;
23 }

C++ STL之map、multimap的更多相关文章

  1. STL:map/multimap用法详解

    map/multimap 使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理.它们可根据key的排序准则 ...

  2. STL之map&multimap使用简介

    map 1.insert 第一种:用insert函数插入pair数据 #include <map> #include <string> #include <iostrea ...

  3. 【STL】-Map/Multimap的用法

    初始化: map<string,double> salaries; 算法: 1. 赋值.salaries[ "Pat" ] = 75000.00; 2. 无效的索引将自 ...

  4. 【C++ STL】Map和Multimap

    1.结构 Map和multimap将key/value pair(键值/实值 队组)当作元素,进行管理.他们根据key的排序准则将元素排序.multimap允许重复元素,map不允许. 元素要求: k ...

  5. STL中的map/multimap小结

    (1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)n ...

  6. iBinary C++STL模板库关联容器之map/multimap

    目录 一丶关联容器map/multimap 容器 二丶代码例子 1.map的三种插入数据的方法 3.map集合的遍历 4.验证map集合数据是否插入成功 5.map数据的查找 6.Map集合删除元素以 ...

  7. STL之Map和multimap容器

    1.Map和multimap容器 1)map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. 2)map中key值是唯一的.集合中的元素按一 ...

  8. STL中 map 和 multimap

    1. 所在头文件<map>. 命名空间std, 声明如下: namespace std{ template <class Key,class T, class Compare = l ...

  9. STL之六:map/multimap用法详解

    转载于:http://blog.csdn.net/longshengguoji/article/details/8547007 map/multimap 使用map/multimap之前要加入头文件# ...

  10. STL——容器(Map & multimap)的删除

    Map & multimap 的删除 map.clear();           //删除所有元素 map.erase(pos);      //删除pos迭代器所指的元素,返回下一个元素的 ...

随机推荐

  1. 项目管理工具Maven的简单配置示例

    Maven是一个强大的项目管理工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建.报告和文档.以下是一些关于Maven的具体例子,涵盖了项目配置.依赖管理.插件使用等方面: ...

  2. 如何用python做一个简单的小游戏 Pygame

    当然可以!下面是一个简单的Python游戏开发教程,帮助你入门: 安装Pygame库 Pygame是一个Python游戏开发库,可以帮助你创建游戏窗口.绘制图形.处理用户输入等.你可以使用以下命令在命 ...

  3. 2023 ICPC 杭州游记

    题解 省流:三个 NOI 银牌合成一个 ICPC 区域赛银牌 感谢 gjy 的铜钱剑 和 hszx 的大家玩得很开心 两个联赛数据结构没做出来

  4. 手把手教你搭建国产嵌入式模拟器SkyEye开发环境

    SkyEye介绍 SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目".SkyEye的目标是在通用的Linux和Windows平台上实现一个 ...

  5. kali常用配置

    用户须知 1.免责声明:本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式的损失或损害,包括但不限于数据丢失.系统损坏.个人隐私泄露或经济损失等,不承担任何责任.所有使用本教程内 ...

  6. Element-UI 中使用rules验证 金额 数字

    data中定义验证规则:var checkCount = function (rule, val, callback) { if (!val) { return callback(new Error( ...

  7. Python 绘制 K 线图

    import mplfinance as mpf import pandas as pd # 示例数据 data = pd.DataFrame({ 'Date': ['2023-01-01', '20 ...

  8. Centos8下搭建私人开源网盘NextCloud步骤及使用(基于LAMP)

    简介:Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步.共享.版本控制.团队协作等功能.它的客户端覆盖了Wind ...

  9. 在 Web 中判断页面是不是刷新

    在 Web 开发中,我们经常需要区分用户是否通过刷新操作重新加载了页面.这一操作可能是由用户手动刷新(如按下 F5 键或点击浏览器刷新按钮)或通过浏览器自动重新加载.判断页面是否刷新有助于开发者优化用 ...

  10. ASP.NET Core Library – Hangfire

    前言 以前写过 Hangfire 的学习笔记, 但写的很乱. 这篇做个整理. 介绍 Hangfire 是用来做 server task 的, 比如: background job, delay job ...