有一段代码我改成了更清晰的代码。这就是它:
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()一样
发布于 2013-01-05 20:57:21
这不是正确的c++代码。find返回映射中元素的迭代器,如果没有找到元素,则返回结束迭代器。将map赋值给find的结果将不会编译。此外,您不能将一个map与另一个map的结束迭代器进行比较。还请注意,您必须传递以查找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就是只有在map中找不到元素时才执行某些操作。
https://stackoverflow.com/questions/14171992
复制相似问题