我是靠谱客的博主 朴实时光,最近开发中收集的这篇文章主要介绍map的insert和[]的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        遇到一些bug,检查代码,似乎没有问题,运行,出错。仔细检查,发现针对map变量,插入时候使用了find与insert。但是之前有个查询函数中却直接调用[]重载符去判断second变量是否为空。

        针对map而言,insert和[]还是有一些差别。使用find查找,未找到返回空迭代器。使用[],则一定给程序返回一个结果,如果未找到对应的键信息,则自行构造一个默认键值对,值为空。同理,当直接使用[]对某个键进行赋值操作,例如 mapTmp[2] = 22;如果键值2不存在,则构造pair<int,int>(2,22)的数据。如果键值存在,则直接进行修改。

int main()
{
	map<int, int> mapTmp;
	mapTmp.insert(std::make_pair(1,101));
	cout << "size:"<<mapTmp.size() << endl;
	for (auto &it : mapTmp)
	{
		cout << "first:" << it.first << "  second:" << it.second << endl;
	}
	auto &itse = mapTmp[2];
	cout << "size:" << mapTmp.size() << endl;
	for (auto &it : mapTmp)
	{
		cout << "first:" << it.first << "  second:" << it.second << endl;
	}
	mapTmp[2] = 102;
	cout << "size:" << mapTmp.size() << endl;
	for (auto &it : mapTmp)
	{
		cout << "first:" << it.first << "  second:" << it.second << endl;
	}
    
    return 0;
}

 

        同样,对于一个人而言。定向思维,不是一件好事。线上在数据库因为一些原因回档之后出现问题,思维定式告诉我,这个代码运行了很多次,经历了三次大型测试,肯定没有问题。一定是数据回档导致。而后将数据库中内容导出,发现数据内容与程序预定逻辑南辕北辙,似乎一些都在告诉我,你没错,是回档导致的一些莫名的小问题。

        实际上,问题其实很简单。在他人仅用三十分钟解决掉了之后,我才发现自己跳到了自己的“圈子里”。永远在自己的“圈子里”数羊的人,又怎么会注意栅栏的破洞。太多类似的情景,告诉我们,思维定式容易将人留在自己的“世界里”。这个世界,没有真实、没有光明、没有方向,有的只是无穷无尽、应接不暇的恭维、盲目、自以为是。这种思维定式,我有时候也叫他执念,执念如饮酒,有些人饮酒可以仗剑走天涯,意气风发,拂袖一洒,留万世佳名,歌一曲神话。有些人则相差甚远。emmmmm,真能扯。。。

最后

以上就是朴实时光为你收集整理的map的insert和[]的区别的全部内容,希望文章能够帮你解决map的insert和[]的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部