c ++ map函数中的向量相等

时间:2013-01-05 12:55:24

标签: c++ map

有一段代码我更改为更清晰的代码。这是:

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()

1 个答案:

答案 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

只有在地图中找不到元素时才会做东西。