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

C++ STL-map

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

C++ STL-map

C++ map

文章目录
  • C++ map
  • 前言
  • 一、map的定义
    • 定义
  • 二、map常用函数
    • 1.find(): 返回键的映射的迭代器
    • 2.erase():删除元素
      • erase(it_map):删除迭代器为 it_map 的元素
      • erase(a): 删除键为 a 的元素
      • erase(it_map_start, it_map_end):删除迭代器 it_map_start 到 it_map_end 区间的元素
    • 3.clear():清空map


前言

map是常用的STL容器,它可以将任何基本类型映射到任何基本类型

它会以键的大小自动排序。

一、map的定义

如果要使用 map 需要添加头文件

#include 

除此之外还要添加

using namespace std;
定义
#include 
using namespace std;

map Mymap; //typename_Key为主键,typename_Value为主键映射的值

一般情况下,可以像访问数组一样访问 map

#include 
#include 

using namespace std;

int main()
{
	map Mymap;
	Mymap["one"] = 1;
	Mymap["two"] = 2;
	Mymap["three"] = 3;

	cout << Mymap["one"] << endl << Mymap["two"] << endl << Mymap["three"] << endl;

	return 0;
}

结果如下:

map 也可以通过迭代器访问

#include 
#include 

using namespace std;

int main()
{
	map Mymap;
	Mymap['a'] = 10;
	Mymap['b'] = 20;
	Mymap['c'] = 30;
	
	map::iterator it_map_start = Mymap.begin();  //迭代器存放首地址
	map::iterator it_map_end = Mymap.end();  //迭代器存放尾元素地址的下一位(不存元素,只作为迭代器末尾标志)

	for(it_map_start; it_map_start != it_map_end; it_map_start ++) 
	cout << it_map_start->first << ' ' << it_map_start->second << endl;  //map迭代器可以用 first 访问键,用 second 访问值。 

	return 0;
}

结果如图:

二、map常用函数 1.find(): 返回键的映射的迭代器

时间复杂度O(logN),N为map中映射个数

代码如下(示例):

#include 
#include 

using namespace std;

int main()
{
	map Mymap_char;
	mapMymap_str;
	Mymap_char['x'] = 24;
	Mymap_str["okk"] = 36;

	map::iterator it_map_char = Mymap_char.find('x');
	map::iterator it_map_str = Mymap_str.find("okk");

	cout << it_map_char->first << ' ' << it_map_char->second << endl;
	cout << it_map_str->first << ' ' << it_map_str->second << endl;

	return 0;
}

结果如下:

2.erase():删除元素 erase(it_map):删除迭代器为 it_map 的元素
#include 
#include 

using namespace std;

int main()
{
	map Mymap_int;
	Mymap_int[1] = 10;
	Mymap_int[2] = 20;
	Mymap_int[3] = 30;

	map::iterator it_map_int = Mymap_int.find(2);
	Mymap_int.erase(it_map_int);

	for(map::iterator it = Mymap_int.begin(); it != Mymap_int.end(); it ++)
	cout << it->first << ' ' << it->second << endl;

	return 0;
}

结果如下:

erase(a): 删除键为 a 的元素

时间复杂度O(logN),N为 map 内元素个数

#include 
#include 

using namespace std;

int main()
{
	map Mymap_str;
	Mymap_str["one"] = 100;
	Mymap_str["two"] = 200;
	Mymap_str["three"] = 300;

	Mymap_str.erase("two");

	for(map::iterator it = Mymap_str.begin(); it != Mymap_str.end(); it ++)
	cout << it->first << ' ' << it->second << endl;

	return 0;
}

结果如图:

erase(it_map_start, it_map_end):删除迭代器 it_map_start 到 it_map_end 区间的元素
#include 
#include 


using namespace std;

int main()
{
	map Mymap_char;
	Mymap_char['q'] = 10;
	Mymap_char['w'] = 15;
	Mymap_char['e'] = 20;
	Mymap_char['r'] = 25;

	map::iterator it_map_char_start = Mymap_char.begin();
	map::iterator it_map_char_end = Mymap_char.end();

	Mymap_char.erase(it_map_char_start, it_map_char_end);

	cout << Mymap_char.size() << endl; //size() 可以获取 map 中映射对数,时间复杂度为 O(1)
	
	return 0;
}

结果如下:

3.clear():清空map

时间复杂度 O(N), N为元素个数

#include 
#include 

using namespace std;

int main()
{
	map Mymap_char;
	Mymap_char['a'] = 1;
	Mymap_char['b'] = 3;
	Mymap_char['c'] = 5;

	Mymap_char.clear();

	cout << Mymap_char.size() << endl;  //查询 Mymap_char 中映射对数
	
	return 0;
}

结果如下:

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

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

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