【发布时间】:2013-11-24 22:35:53
【问题描述】:
我有这样的 C++ 代码:
if(rtstructure.find(varName) != rtstructure.end()) {
rtdef = rtstructure[varName];
}
其中 rtstructure 是 std::map ,其中 std::string 为键。 此代码有效,但让它搜索两次相同的密钥似乎是一种浪费。如果我在赋值周围省略 if 情况,如果 varName 指向一个不存在的键,程序就会崩溃。
我是否可以在单个映射操作中查找 std::map 中的键并在它存在时获取它的值,如果它不存在则不会崩溃?
【问题讨论】:
-
您的程序通常不会崩溃。你有没有机会使用
map<K,V*>?还要注意map::find返回一个迭代器,你可以愉快地使用迭代器的value概念(second) -
是的,地图是std::map<:string rtobject_t> rtstructure;其中 rtobject_t 是一个结构体。
-
显然,如果引用不存在的成员,[] 运算符将返回一个新的未初始化指针。
标签: c++