gpt4 book ai didi

c++ - C++ 映射函数中的 vector 相等性

转载 作者:行者123 更新时间:2023-11-28 03:25:27 26 4
gpt4 key购买 nike

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

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

最佳答案

这不是正确的 c++ 代码。 find 返回指向映射中某个元素的迭代器,如果未找到该元素,则返回结束迭代器。将映射分配给 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 中找到时才执行操作。

关于c++ - C++ 映射函数中的 vector 相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14171992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com