/*
关联型容器:(底层机制:红黑树的数据结构)
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;
}
c++:map容器
最新推荐文章于 2023-05-19 22:04:50 发布