引言
⚠️ 本文不确定适用于所有情况,写下此文章时已经过测试,本文为笔者初学记录,如有错误,敬请提出批评。
map和java中的map类似,也是存储键值对的,在C++中,隶属于标准模板库(Standard Template Library (STL)),其存储的键值对,第一个是键,第二个是值,键是唯一的,值可以相同,也可以不相同。
为了严谨,本文不使用using namespace std; 这样就知道哪些地方使用了std了。
用法
头文件
如果要使用map,需要引入map头文件,#include<map>
创建一个map对象
std::map<std::string, int> map; // 对象名为map,其中键是std:string类型,值为int类型
pair
pair是的“对”,可以理解为key-value对,
贴下代码,如下所示
std::pair<int,int> a;
a.first = 1;
a.second = 2;
在这里first相当于key,second相当于value
赋值
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与第一次相同,则不会修改原有值

如果想修改一个值的话,直接赋值方法可以实现,也就是上文中的map["3"] = 3;
查找
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方法
查看总数
map.size() //这个map是变量名
删除
map.erase(map.find("1")); //此处需要iterator,find方法返回的是迭代器对象
判断key是否存在
map.count(键); // 返回0不存在,返回1是存在
if (map.find(键) == map.end()) //如果条件成立,则不存在,否则存在
清空map
map.clear()


评论 0
还没有评论,来说点什么吧。