C++ 在C+中,哪一个更适合检查密钥是否在哈希映射中+;?使用try…catch块或使用迭代器比较查找?

C++ 在C+中,哪一个更适合检查密钥是否在哈希映射中+;?使用try…catch块或使用迭代器比较查找?,c++,hashmap,C++,Hashmap,据我所知,有两种基本方法可以检查项目是否在哈希映射中: 假设我们有一个哈希映射:hash映射amap 如果我们要检查地图上是否有“abc”,那么我们可以 hash_map<string, int>::iterator itr = amap.find("abc"); if (itr != amap.end()) //in the map 只是想知道哪一个更好?为了提高效率?使用find()。测试迭代器几乎肯定比捕获异常要便宜得多。使用find()。测试迭代器几乎肯定比捕获异常要便宜得

据我所知,有两种基本方法可以检查项目是否在哈希映射中:

假设我们有一个哈希映射:
hash映射amap

如果我们要检查地图上是否有“abc”,那么我们可以

hash_map<string, int>::iterator itr = amap.find("abc");
if (itr != amap.end()) //in the map

只是想知道哪一个更好?为了提高效率?

使用
find()
。测试迭代器几乎肯定比捕获异常要便宜得多。

使用
find()
。测试迭代器几乎肯定比捕获异常要便宜得多。

异常在C++中是很昂贵的。C++中的异常是昂贵的。+ 1在VisualStudio调试会话中更不用说在输出窗口中对第一次异常通知的BejeZor进行垃圾邮件。+ 1更不用说VisualStudio调试了。会话在输出窗口中向Bejeezor发送第一次机会异常通知。
try {
    int value = amap.at("abc");
}
catch(out_of_range& e) {
    //not there    
}