map 类型, 一个数据很大,一个小数据。。判断是否有重复的元素

a2175919 2015-08-31 11:37:52
2个map<std::string, bool> 类型, 一个数据很大,一个小数据。。判断是否有重复的元素
哪个效率高呢? g_onePlatform 里面有很多元素 。。比如100w以上 , mapOneRecords小数据

第一种:
for (map<std::string, bool>::const_iterator itb = g_onePlatform.begin(); itb != g_onePlatform.end(); itb++)
{
map<std::string, bool>::iterator itFind = mapOneRecords.find(itb->first);
if (itFind != mapOneRecords.end())
{
isFlag = true;
break;
}
}

第二种:
for (map<std::string, bool>::const_iterator itb = mapOneRecords.begin(); itb != mapOneRecords.end(); itb++)
{
map<std::string, bool>::iterator itFind = g_onePlatform.find(itb->first);
if (itFind != g_onePlatform.end())
{
isFlag = true;
break;
}
}

或者中间的find换成直接取下标g_onePlatform[itb->first] 是否为true , 效率哪种高呢 ?
...全文
210 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
二班的码农 2015-09-01
  • 打赏
  • 举报
回复
数据小的遍历,在数据大中查找,效率要高点 假如,两个map中分别有m, n个数据,遍历第一个map时间复杂度为O(m),查找第二个map的复杂度为O(logn),则总复杂度为O(mlogn),所以应该把大的放在log中,这样才能发挥对数的优势
fly_dragon_fly 2015-09-01
  • 打赏
  • 举报
回复
为什么要映射两次, 一次不行吗

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧