unordered_map判断密钥是否在地图中

Alf*_*ong 0 c++ unordered-map g++ linked-list

我试过这段代码

 #include <iostream>
 #include <utility>
 #include <vector>
 #include <unordered_map>
 #include <stdexcept>

 using namespace std;

 int main() {
    unordered_map<int,int> parent_map;
    try {
        int a = parent_map[0];
        cout<<a<<endl;

    } catch (out_of_range oe) {
        cout<<"out of range"<<endl;
    }

    return 0;

 }
Run Code Online (Sandbox Code Playgroud)

我认为应该抓住超出范围的例外.但是,输出是

0
Run Code Online (Sandbox Code Playgroud)

我很迷惑.我记得我之前有过这个工作.

bil*_*llz 5

operator[]不抛出,你想尝试std :: unordered_map :: at

int a = parent_map.at(0);
Run Code Online (Sandbox Code Playgroud)

operator[]如果密钥没有发现插入的元素.

并且您希望通过引用捕获异常

catch (const out_of_range &oe) {
   cout<<"out of range: " << oe.what() <<endl;
}
Run Code Online (Sandbox Code Playgroud)