C++ c+中的向量相等+;映射函数
有一段代码我改成了更清晰的代码。这是:C++ c+中的向量相等+;映射函数,c++,map,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(ho
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;
}
地图流量;
静态映射::迭代器流量;
trafficItr=traffic.find(主机对);
如果(trafficItr==traffic.end()){
trafficItr=traffic.insert(make_pair(hostPair,traffic())。首先;
}
这不是全部代码。这只是代码的一部分。所以它不会编译不是答案,现在它编译了
traffic.first
是类TwoWayHostPair
的属性。我认为,if(trafficItr==traffic.end())
意味着iftrafficItr
不等于traffic
,这可能是不正确的
有人知道我的说法是否属实吗?如果为真,当
trafficItr
等于traffic
时,结果会是什么?这是一个不正确的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
map variableA,variableB;
//variableA设置为适当的值
迭代器iter;
iter=variableB.find(TwoWayHostPair_实例)
if(iter==variableB.end())
//做点什么
只有在地图中找不到元素时才执行操作。地图不是向量。请参阅,例如了解
find
的结果意味着什么。是的,我的错误:)对不起inconvenience@AlokSave添加更多信息我知道这是不完整的,但这是本质。即使在比较之前,对variableA
的赋值也不会编译这可能最好作为一个注释;指出示例代码甚至没有编译基本上会使整个问题无效!@OliCharlesworth I wa“我不希望包含更正后的版本,这不太可能作为注释。”Andy Rowl我也已经修复了它。