介绍
- map是一种键值对容器,第一个数值为关键字(key),第二个数值为该元素对应的出现的次数。如果是map,key只会出现一次,如果是unordered_map,无此限制。此外,map会对元素进行排序,unordered_map是无序的。
Map的使用
- 引入头文件 #include<map> #include<unordered_map>
- map对象是一个模板类,需要关键字和存储对象两个模板参数 std::map<int,std::string> person;
- 可以对模板进行类型定义 使其使用更加方便 typedef std::map<int,std::string> MAP_INT_STRING; MAP_INT_STRING person;
map添加数据
- 准备操作 std::map<int,std::string> map_element;
- 使用pair map_element.insert(std::pair<int,std::string>(1,"Jim"));
- 使用value_type map_element.insert(std::map<int,std::string>::value_type(1,"Jim"));
- 使用emplace map_element.emplace(1,"Jim");
- 使用数组
map数据的遍历
- 前向迭代器
for (auto i = m2.cbegin(); i != m2.cend(); ++i) {std::cout << i->first << " " << i->second << std::endl;}
- 反向迭代器 使用rbegin和rend替代上面的cbegin 和 cend
- 数组形式 谨慎使用
map中元素的查找
- find() 函数返回一个迭代器指向键值为key的元素,如果没有找到就返回指向map尾部的迭代器
map<int ,string > ::iterator l_it;; l_it = maplive.find(112);if(l_it == maplive.end())cout<<"we do not find 112"<<endl;else cout<<"wo find 112"<<endl;
map中元素的删除
iterator erase(iterator it) ;//通过一个条目对象删除
iterator erase(iterator first,iterator last); //删除一个范围
size_type erase(const Key&key); //通过关键字删除
clear();//就相当于enumMap.erase(enumMap.begin(),enumMap.end());
参考链接
- C++ map用法
- C++ 打印 vector 的几种方法