有一段代码我更改为更清晰的代码。这是:
map <TwoWayHostPair, Traffic> traffic;
static map <TwoWayHostPair, Traffic>::iterator trafficItr;
trafficItr = traffic.find(hostPair);
if (trafficItr == traffic.end()) {
trafficItr = traffic.insert(make_pair(hostPair, Traffic())).first;
}
这不是完整的代码。这只是代码的一部分。所以它不会编译不是答案,现在它编译
traffic.first
是类TwoWayHostPair
的属性。我认为if(trafficItr == traffic.end())
表示如果trafficItr
不等于traffic
,那可能不正确。
有谁知道我的说法是否属实?如果确实如此,当trafficItr
等于traffic
时,结果会是什么?它是否像trafficItr == traffic.begin()
答案 0 :(得分:2)
这不是正确的c++
代码。如果找不到元素,find
将向地图中的元素或结束迭代器返回迭代器。将地图分配给find的结果只是不会编译。此外,您无法将地图与另一个地图的结束迭代器进行比较。另请注意,您必须传递以查找TwoWayHostPair的实例或可转换为此类实例的内容。
代码的想法如下:
map <TwoWayHostPair, ClassA> variableA, variableB;
//variableA is set to a proper value
map <TwoWayHostPair, ClassA>::iterator iter;
iter = variableB.find(TwoWayHostPair_instance)
if(iter == variableB.end())
//do something
只有在地图中找不到元素时才会做东西。