我正在使用std::map<std::string, MyClass* >
.
我想测试是否my_map.find(key)
返回了一个特定的指针。
现在我正在做;
auto iter = my_map.find(key);
if ((iter != my_map.end()) && (iter->second == expected)) {
// Something wonderful has happened
}
但是,operator *
迭代器需要返回一个引用。直觉上我假设它是有效的并且完全初始化?如果是这样,my_map.end()->second
将是NULL
,并且(因为NULL
从未预料到),我可以将我的 if 语句减少为:
if (iter->second == expected)
根据规范,这是否有效?有没有人有这个实现的实际经验?恕我直言,代码变得更加清晰,并且可能会实现微小的性能改进。