c++:map容器

在这里插入图片描述在这里插入图片描述

/*
关联型容器:(底层机制:红黑树的数据结构)
	map:映射,其元素由(key,value)二元组组成,key和value是一一对应的关系。(python字典
	multimap:多重映射。一个键(key)可以对应多个值(value)。
	set:相当于只有键,没有值的map
	multimap:相当于只有键,没有值的multimap
关联型容器是通过 键(key) 来存储和读取元素的。而顺序型容器是通过 元素在容器中的位置顺序 来进行的。
*/

//map类定义在<map>头文件中
//map对 [ ]符号进行了重载,可以用[]修改元素的值,添加元素。[]中为key值
/*
pair类型:pair类定义在<utility>的头文件中,pair是一个类模板,它将两个值(可不同类型)组织在一起,通过first、second来访问两个值
pair对象常常作为元素被添加到map中
*/
#include<iostream>
#include<map>
#include<utility>
#include<string>
using namespace std;
int main() {
	map<string, int>m1;//定义一个map类对象
	//map对象.insert() : 给map容器插入一个pair类的值

	//先插入3组元素
	m1.insert(pair<string, int>("tom", 96)); //pair<string, int>("tom",96)初始化了一个pair类对象
	m1.insert(pair<string, int>("tony", 100));
	m1["dale"] = 94; //"dale"为key值,其vaule为94
	m1["tom"] = 91;//可以直接修改元素值
	m1["abc"] = 84;
	int r = m1.erase("abc");//删除关键字“abc”对应的条目,删除成功则返回1,否则0。
	if (r == 1)
		cout << "删除成功" << endl;
	else
		cout << "删除失败" << endl;

	cout << m1["tony"] << endl; //100。可以以这种方式输出值

	//map中查找元素,find()
	map<string, int>::iterator p;
	p = m1.find("tom"); //查找关键字“tom”,若查找成功,则返回目标项的迭代器,否则返回m1.end()迭代器
	//下面的语句不用加循环,应该是find()函数自带有循环的功能
	if (p == m1.end()) 
		cout << "不存在" << endl;
	else
		cout << "找到了" << endl;

	map<string, int>::iterator it; //定义了一个迭代器
	//双向迭代器支持++,=,==,!= 等符号,不能使用 < <= > >= 等符号
	for (it = m1.begin(); it != m1.end(); it++) {  //map是无序的
		cout << (*it).first << ' ' << (*it).second << endl;
	}
	return 0;
}

输出如图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值