C++之map
xinruoqianqiu 2024-08-07 08:35:02 阅读 74
1、map介绍
map是C++ STL的一个关联容器,它提供一对一的数据处理能力。其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、使用结构体或类自定义的类型。
第一个可以称为关键字(key);
第二个可能称为该关键字的值(value);
使用 map 容器存储的各个键值对,键的值既不能重复也不能被修改。换句话说,map 容器中存储的各个键值对不仅键的值独一无二,键的类型也会用 const 修饰,这意味着只要键值对被存储到 map 容器中,其键的值将不能再做任何修改。
2、map库函数
2.1、构造函数
(1)map<key_DataType, value_DataType> map_vec;
<code>//声明一个map类型的变量举例如下:
map<int, int> map1;
map<int, string> map2;
map<string, int> map3;
map<vector<int>, vector<vector<int>>> map4;
map<vector<int, int> map5
2.2、属性操作
(1)empty() // 如果map为空,则返回true
(2)size() // 返回map中的元素数
(3)max size() // 返回map的最大容量
2.3、元素访问
(1)operator[] // 用给定的键检索元素
(2)at // 用给定的键检索元素
2.4、增删改查
insert() //在map中插入元素
erase() //从map上擦除元素
swap() //交换map内容
clear() //删除map的所有元素
emplace() //构造新元素并将其插入map
emplace_hint() //通过提示构造新元素并将其插入map
key _comp() //返回键比较对象的副本
value comp() //返回值比较对象的副本
find() //搜索具有给定键的元素
count() //获取与给定键匹配的元素数
lower_bound() //返回迭代器的下限
upper_bound() // 返回一个迭代器到上限
equal_range() //返回与给定键匹配的元素范围
2.5、迭代器
(1)begin() //返回指向map中第一个元素的迭代器
(2)cbegin() //返回指向map中第一个元素的consti迭代器
(3)end() // 返回指向末尾的迭代器
(4)cend() //返回指向末尾的常量迭代器
(5)rbegin() //返回指向末尾的反向迭代器
(6)rend() //返回指向起点的反向迭代器
(7)crbegin() //返回指向末尾的常量反向迭代器
(8)crend() //返回指向起点的常量反向迭代器
3、示例
#include <map>
#include <iostream>
using namespace std;
void print_map(map<int, string> v)
{
cout << "map: ";
for (auto it = v.begin(); it != v.end(); it++)
{
cout << it->first << " " << it->second << " ";
}
cout << endl;
}
int main()
{
map<int, string> mp1;
mp1[1] = "abcdefg HIJKLMN";
mp1[2] = "zhong guo ni hao";
mp1[3] = "-=-=-=-=-=-=-=-=";
mp1[4] = "++++++++++++++++";
mp1[5] = "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk";
print_map(mp1);
// 查找
map<int, string>::iterator it = mp1.find(4);
cout << it->first << " " << it->second << endl;
//删除
it = mp1.find(4);
mp1.erase(it);
print_map(mp1);
mp1[4] = "++++++++++++++++";
//删除区间
it = mp1.find(4);
mp1.erase(it, mp1.end());
print_map(mp1);
mp1[4] = "++++++++++++++++";
mp1[5] = "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk";
cout << mp1.size() << endl;
mp1.clear();
cout << mp1.size() << endl;
return 0;
}
结果为:
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。