前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高效的使用stl::map和std::set

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

作者头像
一见
发布2018-08-07 15:25:00
2.8K0
发布2018-08-07 15:25:00
举报
文章被收录于专栏:蓝天蓝天

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; // 修改为新值 

}

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-03-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档