是否需要循环(使用相关的迭代器)来搜索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
答案 0 :(得分:0)
std::map
为implemented as a R-B Binary Tree,因此find
为O(logN)。没有办法让这个“更有效率”。通过迭代搜索是O(N)并且非常低效,完全无法首先使用std::map
。
我建议您查看std::map
是什么以及与std::vector
类似的内容。