鱼C论坛

 找回密码
 立即注册
查看: 1845|回复: 2

c++中map的详细用法

[复制链接]
发表于 2023-10-13 23:43:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
对map函数还有很多不会用
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-13 23:44:14 | 显示全部楼层
在C++中,map是一种关联式容器,它提供了一种将键映射到值的方法。以下是map的详细用法:

1. 包含头文件

首先,需要包含头文件<map>。

2. 定义map变量

定义一个map变量,可以使用以下语法:

  1. std::map<key_type, value_type> map_name;
复制代码


其中,key_type是键的数据类型,value_type是值的数据类型,map_name是map变量的名称。

例如,定义一个存储字符串为键、整数为值的map变量:

  1. std::map<std::string, int> my_map;
复制代码


3. 插入元素

可以使用insert()函数向map中插入元素。insert()函数的参数是一个std::pair对象,该对象包含要插入的键和值。

例如,向上面的my_map变量中插入一个键为"apple",值为5的元素:

  1. my_map.insert(std::make_pair("apple", 5));
复制代码


4. 访问元素

可以使用下标运算符[]或find()函数访问map中的元素。下标运算符[]返回与指定键相关联的值,如果该键不存在,则插入一个具有该键的新元素。

例如,访问键为"apple"的值:

  1. int value = my_map["apple"];
复制代码


或者,使用find()函数访问键为"apple"的值:

  1. auto iter = my_map.find("apple");
  2. if (iter != my_map.end()) {
  3.     int value = iter->second;
  4. }
复制代码


5. 删除元素

可以使用erase()函数删除map中的元素。erase()函数的参数是要删除的键。

例如,删除键为"apple"的元素:

  1. my_map.erase("apple");
复制代码


以上就是map的基本用法。需要注意的是,map中的元素是按照键的顺序排序的,因此可以使用begin()和end()函数遍历map中的元素。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-13 23:45:12 | 显示全部楼层
Map是C++标准库中的关联容器,它提供了一种键-值(key-value)对的映射关系。以下是Map的详细用法:

1. 包含头文件:
首先需要包含<map>头文件。

2. 定义和初始化:
可以通过多种方式来定义和初始化Map。下面是几个例子:
  1. #include <map>
  2. // 定义一个空的Map
  3. std::map<int, std::string> myMap;
  4. // 使用初始化列表创建Map并赋初值
  5. std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
  6. // 通过插入键-值对来初始化Map
  7. std::map<int, std::string> myMap;
  8. myMap.insert(std::make_pair(1, "one"));
  9. myMap.insert(std::make_pair(2, "two"));
  10. myMap.insert(std::make_pair(3, "three"));
复制代码

3. 插入元素:
可以使用insert()函数或[]运算符来插入键-值对。
  1. std::map<int, std::string> myMap;
  2. // 使用insert()函数插入键-值对
  3. myMap.insert(std::make_pair(1, "one"));
  4. myMap.insert(std::make_pair(2, "two"));
  5. myMap.insert(std::make_pair(3, "three"));
  6. // 使用[]运算符插入键-值对
  7. myMap[4] = "four";
  8. myMap[5] = "five";
复制代码

4. 访问元素:
可以使用[]运算符或at()函数来访问Map中的元素。
  1. std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
  2. // 使用[]运算符访问元素
  3. std::cout << myMap[1] << std::endl;  // 输出:one
  4. // 使用at()函数访问元素
  5. std::cout << myMap.at(2) << std::endl;  // 输出:two
复制代码

5. 迭代Map:
可以使用迭代器来遍历Map中的所有键-值对。
  1. std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
  2. // 使用auto关键字和迭代器进行遍历
  3. for (auto it = myMap.begin(); it != myMap.end(); ++it) {
  4.     std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
  5. }
复制代码

6. 查找元素:
可以使用find()函数来查找指定的键,并返回指向该键的迭代器。如果找不到,find()函数将返回指向末尾元素的迭代器。
  1. std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
  2. // 使用find()函数查找键为2的元素
  3. auto it = myMap.find(2);
  4. if (it != myMap.end()) {
  5.     std::cout << "Key found, Value: " << it->second << std::endl;
  6. } else {
  7.     std::cout << "Key not found" << std::endl;
  8. }
复制代码

7. 删除元素:
可以使用erase()函数来删除指定的键或迭代器对应的元素。
  1. std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
  2. // 删除键为2的元素
  3. myMap.erase(2);
  4. // 使用迭代器删除元素
  5. auto it = myMap.find(3);
  6. if (it != myMap.end()) {
  7.     myMap.erase(it);
  8. }
复制代码

这些是Map的一些常用操作和用法。希望对你有所帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-9 20:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表