C++之map

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;

//声明一个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;
}

结果为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值