通过STL映射中的键值搜索元素

时间:2015-11-18 18:00:02

标签: c++ search dictionary stl

是否需要循环(使用相关的迭代器)来搜索STL映射中的元素?或者它与.find(key_value)STL方法一起使用?

如果我可以两种方式,我认为.find方法效率更高,你能否确认一下?

例如:

1.循环播放:

map<string,User> mapUser;
map<string,User>::iterator it=mapUser.begin(); 
while(it != mapUser.end()){
  if(it->first == ID){
      //ID found
  }
  ++it;
}

2.通过.find(key_value)执行此操作:

map<string,User> mapUser;
map<string,User>::iterator it=mapUser.find(ID); 
    if(it != mapUser.end()){   
          // ... ID found (there is a key value in STL map equal to ID)
    }else
          // ID not found

1 个答案:

答案 0 :(得分:0)

std::mapimplemented as a R-B Binary Tree,因此find为O(logN)。没有办法让这个“更有效率”。通过迭代搜索是O(N)并且非常低效,完全无法首先使用std::map

我建议您查看std::map是什么以及与std::vector类似的内容。