专栏首页蓝天高效的使用stl::map和std::set

高效的使用stl::map和std::set

1、低效率的用法

// 先查找是否存在,如果不存在,则插入

if (map.find(X) == map::end()) // 需要find一次

{

    map.insert(x); // 需要find一次

}

// 下面这段代码是一个意思

if (0 == map.count(X) // 需要find一次

{

    map.insert(x); // 需要find一次

}

// 或者是先判断是否存在,如果不存在则插入,反之如果存在则修改

if (map.count(X) > 0) // 需要find一次

{

    map.erase(X); // 需要find一次

}

map.insert(x); // 需要find一次

// 对于erase存在同样低效的用法

if (map.count(X) > 0) // 需要find一次

{

    map.erase(X); // 需要find一次

}

else

{

    // 不存在时的处理

}

2、高效率的用法

// 解决办法,充分利用insert和erase的返回值,将find次数降为1

map::size_type num_erased = map.erase(X); // 需要find一次

if (0 == num_erased)

{

    // 不存在时的处理

}

else

{

    // 存在且删除后的处理

}

pair result_inserted;

result_inserted = map.insert(X);

if (result_inserted.second)

{

    // 不存在,插入成功后的处理

}

else

{

    // 已经存在,插入失败后的处理

    result_inserted.first->second = X; // 修改为新值 

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【高盛AI研究报告】人工智能是时代的拐点

    人工智能是信息时代的尖端科技。 计算的飞跃建立在人类告知计算机如何表现的基础上,计算建立在计算机学习如何表现能够对每个行业有意义的基础上。

    钱塘数据
  • Docker系列教程26-Docker Compose控制服务启动顺序

    在生产中,往往有严格控制服务启动顺序的需求。然而Docker Compose自身并不具备该能力。要想实现启动顺序的控制,Docker Compose建议我们使用...

    用户1516716
  • 苹果推出新操作系统的隐私功能,屏蔽部分网站cookie

    苹果在今天凌晨的WWDC开发者大会上宣布它会屏蔽“赞”按钮的cookie,这种cookie可以让网站跟踪用户。

    FB客服
  • 精彩速览 | 2018威胁情报&APT攻击技术与趋势高峰论坛(附PPT下载)

    五月的最后一天,伴着淅淅沥沥的小雨,由国内知名互联网安全新媒体FreeBuf 主办的2018威胁情报&APT攻击技术与趋势高峰论坛在上海证大美爵酒店盛大召开。本...

    FB客服
  • 工业4.0的大众样本:3万台机器人,50秒造一辆车

    一个小机器人“哼”着清脆的轻音乐从现场的工人边上“轻巧”地擦身而过,顺利地把几样汽车配件运送到了下一个工位。这并非著名科幻小说家艾萨克·阿西莫夫(Isaac A...

    IT派
  • 程序员必知必会的一款入门级的人脸、视频、文字检测以及识别的项目

    这两年人工智能项目很火,之前听入职的应届毕业生说:他们的很多朋友和同学都去培训人工智能了。但是到了培训机构真的能够把一个非计算机专业的人培训出来做人工智能吗?我...

    非著名程序员
  • 推荐一个我梦寐以求的开源库

    注意:今天我分享的这个开源库,真的是非常的好,是我近半年以来非常需要的一个开源库。这个开源库是关于微信小程序的。

    非著名程序员
  • 入行 AI,如何选个脚踏实地的岗位?

    AI原本是一个专业领域,没什么特别的。作为码农一枚,笔者的工作内容正好在这个领域。

    CSDN技术头条
  • Burpsuite结合SQLMap API产生的批量注入插件(X10)

    Tamper:列表中的是sqlmap自带的tamper,输入框中可填入自定义的tamper使用 ”,“逗号分割 。

    FB客服
  • VS2详细设计(二)

    DVIIN1_CLK为输入视频源的随路时钟,用于检测分辨率的时钟,行分辨率的检测从视频源的数据有效信号DVIIN1_DE的上升沿开始计数,直到DVIIN1_DE...

    anytao

扫码关注云+社区

领取腾讯云代金券