c++ std::map 用法

引言

⚠️ 本文不确定适用于所有情况,写下此文章时已经过测试,本文为笔者初学记录,如有错误,敬请提出批评。

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与第一次相同,则不会修改原有值
image.png
如果想修改一个值的话,直接赋值方法可以实现,也就是上文中的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

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

提交后需要审核才会公开。