栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

STL--map容器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

STL--map容器

目录

一、pair(对组)

 二、map基本概念

三、map构造和赋值

1.构造:

2.赋值:

 四、map大小和交换

 五、map 插入和删除

 六、map 查找和统计

 七、map 排序

 八、写在最后


一、pair(对组)
  • pair  p  (value1,  value2);
  • pair  p = make_pair(value1,  value2);
#include
using namespace std;
#include

// pair 队组的创建
int main()
{
	// 成对出现的数据
	pair p("TOM",20);
	cout<<"姓名:"< p2 = make_pair("Jerry",23);
	cout<<"姓名:"< 

 二、map基本概念

1. 功能

  • map 中所有元素都是pair
  • pair 中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)
  • 所有元素都会根据元素的键值自动排序

2. 本质:map/multimap 属于关联式容器,底层是用二叉树实现的

3. 优点:可以根据key值快速找到value值

4. map和multimap的区别:

        map 不允许容器中有重复的key值元素

        multimap 允许容器中有重复的key值元素

三、map构造和赋值

map容器中所有的元素都是成对出现,插入数据的时候要用对组

1.构造:
  • map   mp;                     // map默认构造函数
  • map(const  map  &  mp);                 // 拷贝构造函数

2.赋值:
  • map  &  opertor=(const  map  &  mp);        // 重载等号操作符

	#include
	using namespace std;
	#include
	
	// 输出
	void print_map(map &m)
	{
		for(map::iterator it=m.begin();it!=m.end();it++)
		{
			cout<<"key = "<first<<" value = "<second< m;// 无论插入的顺序是什么,输出都会是升序按照key的大小
		m.insert(pair(1,10));
		m.insert(pair(3,20));
		m.insert(pair(2,30));
		m.insert(pair(4,40));
	
		print_map(m);
	
		// 拷贝构造
		map m2(m);
		print_map(m2);
	
		// 赋值
		mapm3;
		m3=m2;
		print_map(m3);
		return 0;
	}

 四、map大小和交换
  • size();                      // 返回容器中元素个数
  • empty();                  // 判断容器是否为空
  • swap();                   // 交换两个集合容器
	#include
	using namespace std;
	#include
	
	// 输出
	void print_map(map &m)
	{
		for(map::iterator it=m.begin();it!=m.end();it++)
		{
			cout<<"key = "<first<<" value = "<second< m;// 无论插入的顺序是什么,输出都会是升序按照key的大小
		m.insert(pair(1,10));
		m.insert(pair(2,20));
		m.insert(pair(3,30));
		m.insert(pair(4,40));
	
		print_map(m);
	
		// 判空
		if(m.empty())
		cout<<"m 为空"< m1;
		m1.insert(pair(5,100));
		m1.insert(pair(6,200));
		m1.insert(pair(7,300));
		m1.insert(pair(8,400));
		cout<<"交换前:"< 

 五、map 插入和删除
  • insert(elem);                            // 在容器中插入元素

  • erase(pos);                           // 删除pos迭代器所指的元素,并返回下一个元素的迭代器
  • erase(beg,  end);     // 删除(beg,end)区间内的所有元素,返回下一个元素的迭代器
  • erase(key);                              // 删除容器给i中值为key的元素
  • clear();                                    // 删除容器中所有元素
	#include
	using namespace std;
	#include
	
	// 输出
	void print_map(map &m)
	{
		for(map::iterator it=m.begin();it!=m.end();it++)
		{
			cout<<"key = "<first<<" value = "<second< m;// 无论插入的顺序是什么,输出都会是升序按照key的大小
		// 插入 insert
		m.insert(pair(1,10));
		m.insert(pair(2,20));
		m.insert(pair(3,30));
		m.insert(pair(4,40));
		print_map(m);
	
		// make_pair
		m.insert(make_pair(5,50));
	
		// 第三种
		m.insert(map::value_type(6,60));
	
		// 第四种
		m[7] = 70;  
		cout< 

 六、map 查找和统计
  • find(key);                      // 查找key是否存在,返回该键的元素迭代器,若不存在,返回map.end();
  • count(key);                  // 统计key的元素个数
	#include
	using namespace std;
	#include
	
	// 输出
	void print_map(map &m)
	{
		for(map::iterator it=m.begin();it!=m.end();it++)
		{
			cout<<"key = "<first<<" value = "<second< m;// 无论插入的顺序是什么,输出都会是升序按照key的大小
		// 插入 insert
		m.insert(pair(1,10));
		m.insert(pair(2,20));
		m.insert(pair(3,30));
		m.insert(pair(4,40));
		print_map(m);
	
		// 查找
		map::iterator pos = m.find(1);    // 返回的是迭代器
		if(pos!=m.end())
		cout<<"找到了位于 "<first<<" 值为 "<second<<" 的元素"< 七、map 排序 
  • map容器按照key值进行排序,从小到大
  • 利用仿函数,可以改变排序规则
	#include
	using namespace std;
	#include
	
	class my_compare
	{
	public:
		bool operator()(int v1,int v2)       // 重载()
		{
			// 仿函数
			// 指定排序方式为降序
			return v1> v2;
		}
	};
	
	// 输出
	void print_map(map &m)
	{
		for(map::iterator it=m.begin();it!=m.end();it++)
		{
			cout<<"key = "<first<<" value = "<second< m;// 无论插入的顺序是什么,输出都会是升序按照key的大小
		// 插入 insert
		m.insert(pair(1,10));
		m.insert(pair(2,20));
		m.insert(pair(3,30));
		m.insert(pair(4,40));
		m.insert(pair(5,50));
		print_map(m);
		return 0;
	}

 八、写在最后

        关于C++中STL的容器的介绍大致就是这样几个容器,没有官方的解释文章和代码,都是一些用法,配上了代码来解释,小编的本意是用来作为笔记本,记录方便,不易丢失。如果能帮到各位在学习C++的同学和朋友们,小编也是非常开心的,最后,还会加入一些关于算法类的介绍,希望大家觉得不错点个赞。

暑期编程PK赛 得CSDN机械键盘等精美礼品!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号