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. spring同时集成mybatis和ibatis

    最近来了一个新项目,说是新的项目,但是需要用到以前旧的模块代码,旧的模块使用架构为ssi 而新项目使用spring mvc +mybatis,考虑到工作量的问题,所以决定使用spring mvc +m ...

  2. 2023 ECF 游记

    录播 闭幕式 回顾 1.11 本来计划下午 vp 去年的 ecf,结果 zjj 忘记买票来投奔我了,所以鸽了.分块和莫队也没看 晚上收拾东西,完全装不下,应该早点寄走一些东西的 1.12 昨晚还想着别 ...

  3. kafka 运维

    查看kafka topic列表 #集群需要先执行unset JMX_PORT ./kafka-topics.sh --zookeeper gitee-zookeeper:2181 --list 查看t ...

  4. Linux-centos中修改默认root帐户的登录用户名

    vi /etc/passwd 按i键进入编辑状态 修改第1行第1个root为新的用户名 按esc键退出编辑状态,并输入:x保存并退出 vi /etc/shadow 按i键进入编辑状态 修改第1行第1个 ...

  5. 基于python的文字转图片工具

    地址 https://hub.docker.com/r/rainsccc/strtoimg 拉取镜像后,可以启动一个容器来运行该应用程序.以下命令会启动容器并将其端口映射到主机上: docker ru ...

  6. Windows C 盘瘦身

    修改 Window 服务器虚拟内存位置 | 博客园 怎么更改电脑默认储存位置呢?| CSDN Win11 磁盘清理怎么没有了?Win11 磁盘清理在哪打开?| 搜狐网 快速清理 Windows 大文件 ...

  7. 1055 - Expression #9 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xxx.xxx.xxx' which is not functionally ...;this is incompatible with sql_mode=only_full_group_by

    MySQL 8 的默认 sql_mode 包含了only_full_group_by,如果想要sql不按照这模式做检查,可以设置当前session的sql_mode值不包含oly_full_group ...

  8. docker network macvlan

    ref: Docker 网络模型之 macvlan 详解,图解,实验完整 网卡也能虚拟化?网卡虚拟化技术 macvlan 详解 docker和macvlan与host互通  

  9. GRLSTM: 基于图的残差LSTM轨迹相似性计算《GRLSTM: Trajectory Similarity Computation with Graph-Based Residual LSTM》(轨迹路网融合、知识图谱嵌入、图神经网络、残差网络、点融合图、多头图注意力网络GAT、残差LSTM、点感知损失函数(图的点损失函数、轨迹的点损失函数))

    2023年10月18日,14:14. 来不及了,这一篇还是看的翻译. 论文:GRLSTM: Trajectory Similarity Computation with Graph-Based Res ...

  10. 使用 Performance API 实现前端资源监控

    1. Performance API 的用处 Performance API 是浏览器中内置的一组工具,用于测量和记录页面加载和执行过程中的各类性能指标.它的主要用处包括: 监控页面资源加载:跟踪页面 ...