c++ - 如果密钥不存在,C++ 可以从 std::map 获取一个不崩溃的值?

  显示原文与译文双语对照的内容

我有这样的C++ 代码:


if(rtstructure.find(varName)!= rtstructure.end()) {


 rtdef = rtstructure[varName];


}



其中rtstructure为 std::map,键为 std::string 。 这段代码工作正常,但是让它在同一键上搜索两次似乎是浪费。 如果我省略了分配周围的例子,程序会在指向不存在的项时崩溃。

我可以在一个地图操作中查找一个 std::map 中的键,如果它存在,则不会在不存在的情况下?

时间: 原作者:

find 给你一个保存/指向 std::pair<>std::map<>::iterator 。 迭代器可以保存和重复使用( 假设你没有做任何使之无效的事情,如 erase ) 。


//i don't know the type of rtstructure so i use auto


//you can replace it to the correct type if C++11 is not available


auto it = rtstructure.find(varName); 


if(it!= rtstructure.end()) {


 rtdef = it->second;


}



原作者:
...