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. SMU 2024 spring 天梯赛自主训练2

    SMU 2024 spring 天梯赛自主训练2 7-1 I Love GPLT - SMU 2024 spring 天梯赛自主训练2 (pintia.cn) PHP 点击查看代码 I L o v e ...

  2. Synology NAS GitLab 配置

    安装 安装的时候会提示服务器名.root用户名等,这步服务器名千万不要写错,不然会登不上去,提示 502. root 密码 网上有很多说 root 密码怎么获取的,但是都不适用. 实际上是第一个访问 ...

  3. Linux中登录mysql

    输入 mysql -u root -p 然后输入密码,就能登录 root@zrt2:/home/zrt2# mysql -u root -pEnter password: Welcome to the ...

  4. JavaScript中的包装类型详解

    JavaScript中的包装类型详解 在 JavaScript 中,我们有基本类型和对象类型两种数据类型. 基本类型包括 String,Number,Boolean,null,undefined 和 ...

  5. ucos cpu_a.asm 注释

    EXPORT CPU_SR_Save import:翻译为进口或引入,表明要调用的函数为外部文件定义 export:翻译为出口或输出,表明该符号可以被外部模块使用,类似于C中的extern功能. ;* ...

  6. Notepad++作死,国产文本编辑器Notepad--发布

    作死的Notepad++ Notepad 和 Notepad++ 都是基于 Windows 的文本编辑器,通常用于编写和编辑纯文本文件. 这两个应用程序都是简单的轻量级程序,提供基本的文本编辑功能. ...

  7. 华为交换机S5700-52C-SI配置vlan

    环境准备:通过超级终端Hyper Terminal和console串口线链接华为交换机,用9600波特率链接 添加vlan <Quidway>system-view #由用户视图进入系统视 ...

  8. Windows 10 美化 Mac OSX 实用教程

    我前几天给新电脑装上了Windows 10系统,想要美化一下,遇到了很多问题,就出了这篇博客,帮大家踩踩坑. 在开始之前,先提醒大家一句: 美化有风险,玩机需谨慎.为以防万一,请大家在进行任何操作前创 ...

  9. MySQL数据库基本操作以及使用

    MySQL数据库 操纵数据库 查看数据库 show databases; 创建数据库 create database <database_name>; 删除数据库 drop databas ...

  10. mysql vs mongodb

    Comments MongoDB 是NoSQL 数据库,适合存JSON格式数据,MySQL是关系型数据库,适合存table格式数据 MongoDB扩展性更好,MySQL支持主从和cluster但是感觉 ...