C++学习之map(一)

C++学习之map(一),第1张

C++学习之map(一)

文章目录
  • C++学习之map(一)
  • 前言
  • 一、map是什么?
  • 二、map的函数
    • 1.map的初始化
    • 2.map的find()函数
    • 3.map的擦除函数
  • 总结


前言

大学要毕业了发现单纯的C语言好像不太够用,对python和C#等语言应用也不是特别熟练,为了更好的适应研究生学习生活开始学习C++。
由于本人本科期间为了比赛修习过一段时间C++,此处直接从map开始进行解析学习。


提示:以下是本篇文章正文内容,下面案例可供参考

一、map是什么?

map的效果如其名,地图作用,亦是映射效果,给一个事物取名,将1称为a,我们可以用a来指代1,感觉是一个灵活版本的#define。例子:数组a[i]的元素a[i]与其下标i的关系。

二、map的函数

mapmapname
type为数据类型
mapname为容器名称
type1—type2
key—value
要素与值的关系

1.map的初始化
map1.insert(pair<int, int>(i,a[i]));//用insert函數插入pair		
map2.insert(map<int, int>::value_type(i,a[i]));//用insert函数插入value_type数据
map3[i]=a[i];//直接赋值

此处的key与value存在对应关系,初步实验后发现当映射成立后一个key的value无法直接更改,但可以擦除后再写入,也可以创造新的key来对应重复的value。

2.map的find()函数

auto posi=map.find(key)
posi是迭代器,已知有两个成员
posi->first//是key
posi->second//是value

代码如下(示例):

//find函数:查找元素位置
cout << "map1:" << endl; 
cout <<"位置->元素"<< endl; //所处位置
for (int i = 0; i < (len); i++)
{
	auto posi1 = map1.find(i);
	cout << posi1->first <<"->" << posi1->second << endl; //所处位置
}
3.map的擦除函数

方法1:迭代器范围刪除

	//用迭代器范围刪除
	auto posi4 = map2.find(9);
	map2.erase(map2.begin(), posi4);
	map2.insert(map<int, int>::value_type(2, 2));//用insert函数插入value_type数据
	cout << "剩余元素:" << endl;
	len = map2.size();
	for (int i = 0; i < 10; i++)
	{
		cout << map2[i] << endl;//该位置的值
	}
	cout << "输出结束" << endl;

此处存在一个问题,无法全部删除,如果使用map2.erase(map2.begin(), posi4);
map2的size为10,key=9是最后一个组,但输出显示最后一组并未被删除。
如果使用map2.erase(map2.begin(), map2.end());
则可以将全部的组删除。输出为0。
顺带提一句,删除后依旧可以输出,但是输出的值为0,输出的类型未验证,留给网友解决吧。

方法2:定点刪除

	cout << "删除实验:"<< endl;
	posi2 = map1.find(9);//迭代器寻找数字
	cout << posi2->second << endl; //所处位置从0开始起数
	map1.erase(posi2->first);
	cout <<"剩余元素:" << endl;
	len= map1.size();
	for (int i = 0; i < len; i++)
	{
		cout << map1[i] << endl;//该位置的值
	}
	cout << "输出结束" << endl;

这个也有意思,len的计算不管删除什么值,长度确实是删除后的长度,但是被删除的地方依旧可以输出为0.

方法3:全部刪除

map1.clear()

总结

暂时用到的函数就这么多,后面刷题碰到新的继续更新。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1324169.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-12
下一篇2022-06-12

发表评论

登录后才能评论

评论列表(0条)

    保存