确定 STL 映射是否包含给定键的值的最佳方法是什么?
#include <map>
using namespace std;
struct Bar
{
int i;
};
int main()
{
map<int, Bar> m;
Bar b = {0};
Bar b1 = {1};
m[0] = b;
m[1] = b1;
//Bar b2 = m[2];
map<int, Bar>::iterator iter = m.find(2);
Bar b3 = iter->second;
}
在调试器中检查它,看起来像iter
只是垃圾数据。
如果我取消注释掉这一行:
Bar b2 = m[2]
调试器显示b2
is {i = 0}
。 (我猜这意味着使用未定义的索引将返回一个包含所有空/未初始化值的结构?)
这些方法都不是那么好。我真正想要的是这样的界面:
bool getValue(int key, Bar& out)
{
if (map contains value for key)
{
out = map[key];
return true;
}
return false;
}
是否存在类似的东西?
只要地图不是多重地图,最优雅的方法之一就是使用 count 方法
if (m.count(key))
// key exists
如果该元素确实存在于地图中,则计数将为 1。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)