0

有一段代码我改成了更清晰的代码。这里是:

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())意味着 iftrafficItr不等于trafficwhich 可能不正确。

有谁知道我的说法是否属实?如果它是真的,什么时候trafficItr等于traffic结果会是什么?是不是有点像trafficItr == traffic.begin()

4

1 回答 1

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

仅当在地图中找不到元素时才执行操作。

于 2013-01-05T12:57:20.933 回答