IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ STL map -> 正文阅读

[C++知识库]C++ STL map

Map是什么

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。

Map头文件

#include <map>

Map的常用构造函数

map对象是模板类,需要关键字存储对象两个模板参数:

map<int,string> stuMap;		//关键字为int数据类型,值为string数据类型

Map数据的三种插入方式(+正向遍历)

1.用insert函数插入pair数据

#include <iostream>
#include <map>
#include <cstring>
using namespace std;

int main()
{
	map<int,string> stuMap;
	stuMap.insert(pair<int,string>(1,"student_one"));
	stuMap.insert(pair<int,string>(2,"student_two"));
	
	map<int,string>::iterator iter;
	for(iter=stuMap.begin();iter!=stuMap.end();iter++)
	{
		cout<<iter->first<<' '<<iter->second<<endl;
	}
	
	return 0;
}

2.用insert函数插入value_type数据

#include <iostream>
#include <map>
#include <cstring>
using namespace std;

int main()
{
	map<int,string> stuMap;
	stuMap.insert(map<int,string>::value_type(1,"student_one"));
	stuMap.insert(pair<int,string>(2,"student_two"));
	
	map<int,string>::iterator iter;
	for(iter=stuMap.begin();iter!=stuMap.end();iter++)
	{
		cout<<iter->first<<' '<<iter->second<<endl;
	}
	
	return 0;
}

3.用数组方式插入数据

#include <iostream>
#include <map>
#include <cstring>
using namespace std;

int main()
{
	map<int,string> stuMap;
	stuMap[1]="student_one";
	stuMap.insert(pair<int,string>(2,"student_two"));
	
	map<int,string>::iterator iter;
	for(iter=stuMap.begin();iter!=stuMap.end();iter++)
	{
		cout<<iter->first<<' '<<iter->second<<endl;
	}
	
	return 0;
}

Map的大小

stuMap.size();

查找和获取Map中的元素的两种方法

1.用count函数来判定关键字是否出现,其缺点是无法定位数据出现位置,由于map的特性,一对一的映射关系,就决定了count函数的返回值只有两个,要么是0,要么是1,出现的情况,当然是返回1了

stuMap.count(1);

2.用find函数来定位数据出现位置,它会返回一个迭代器,当数据出现时,它返回数据所在位置的迭代器,如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器。

#include <iostream>
#include <map>
#include <cstring>
using namespace std;

int main()
{
	map<int,string> stuMap;
	stuMap[1]="student_one";
	stuMap.insert(pair<int,string>(2,"student_two"));
	
	map<int,string>::iterator iter;
	iter=stuMap.find(1);
	if(iter != stuMap.end())
	{
		cout<<"Find,the key is "<<iter->first<<",the value is " <<iter->second<<endl;
	}
	else
	{
		cout<<"Do not find"<<endl;
	}
	
	return 0;
}

从Map中删除元素

移除某个map中的某个条目用erase()
该成员方法的定义如下:

iterator erase (iterator it); //通过一个条目对象删除
iterator erase (iterator first,iterator last); //删除一个范围
size_type erase(const Key&key); //通过关键字删除

#include <iostream>
#include <map>
#include <cstring>
using namespace std;

int main()
{
	map<int,string> stuMap;
	stuMap[1]="student_one";
	stuMap.insert(pair<int,string>(2,"student_two"));
	
	map<int,string>::iterator iter;
	//用迭代器删除
	iter=stuMap.find(1);
	stuMap.erase(iter);
	
	//用关键字删除
	int n=stuMap.erase(2);
	
	 //用迭代器成片地删除
	 stuMap.erase(stuMap.begin(),stuMap.end()); 
	
	for(iter=stuMap.begin();iter!=stuMap.end();iter++)
	{
		cout<<iter->first<<"  "<<iter->second<<endl;
	}
	
	return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-18 12:31:35  更:2021-08-18 12:32:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 10:22:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码