Loading... # 引言 ⚠️ 本文不确定适用于所有情况,写下此文章时已经过测试,本文为笔者初学记录,如有错误,敬请提出批评。 map和java中的map类似,也是存储键值对的,在C++中,隶属于标准模板库(Standard Template Library (STL)),其存储的键值对,第一个是键,第二个是值,键是唯一的,值可以相同,也可以不相同。 为了严谨,本文不使用`using namespace std;` 这样就知道哪些地方使用了std了。 # 用法 ## 头文件 如果要使用map,需要引入map头文件,`#include<map>` ## 创建一个map对象 ```c++ std::map<std::string, int> map; // 对象名为map,其中键是std:string类型,值为int类型 ``` ## pair pair是的“对”,可以理解为key-value对, 贴下代码,如下所示 ```c++ std::pair<int,int> a; a.first = 1; a.second = 2; ``` 在这里first相当于key,second相当于value ## 赋值 ```c++ map.insert(std::pair<std::string, int>("1", 1)); //pair方式赋值 map.insert({"2",2}); // 我也说不清是什么方式,如果有知道的,敬请评论,谢谢。 map["3"] = 3; // 直接赋值 std::map<std::string, int>::iterator iter; //创建一个map的迭代器 iter = map.begin(); // 迭代器为map的开始 while (iter != map.end()) { // 如果迭代器不是map的结尾就循环 std::string line = std::string(iter->first.c_str()) + std::string(":") + std::string(std::to_string(iter->second).c_str()); // 构造输出字符串 printf("%s \n", line.c_str()); // 输出到控制台 iter++; // 迭代器迭代到下一个位置 } ``` 当第二次insert时,如果key与第一次相同,则不会修改原有值 ![image.png](https://www.zunmx.top/usr/uploads/2022/11/85247168.png) 如果想修改一个值的话,直接赋值方法可以实现,也就是上文中的`map["3"] = 3;` ## 查找 ```c++ std::cout << map.find("4")->second << std::endl; //find方法(迭代器方式查找) std::cout << map["4"] << std::endl; // 通过key直接找 std::cout << map.at("4") << std::endl; // map.at方法 ``` ## 查看总数 ```c++ map.size() //这个map是变量名 ``` ## 删除 ```c++ map.erase(map.find("1")); //此处需要iterator,find方法返回的是迭代器对象 ``` ## 判断key是否存在 ```c++ map.count(键); // 返回0不存在,返回1是存在 ``` ```c++ if (map.find(键) == map.end()) //如果条件成立,则不存在,否则存在 ``` ## 清空map ```c++ map.clear() ``` © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏