gpt4 book ai didi

c++ - 如何比较结构

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:03:06 25 4
gpt4 key购买 nike

我很难正确设置比较。这是我的问题的一个示例,其中我的代码错误地假定 {1,2}={2,1}:http://ideone.com/i7huL

#include <iostream>
#include <map>
using namespace std;

struct myStruct {
int a;
int b;
bool operator<(const myStruct& rhs) const {
return rhs.a < this->a && rhs.b < this->b;
}
};


int main() {
std::map <myStruct, int> mymap ;
myStruct m1={1,2};
myStruct m2={2,1};
mymap.insert(make_pair(m1,3));
std::map<myStruct, int>::iterator it1 = mymap.find(m1);
std::map<myStruct, int>::iterator it2 = mymap.find(m2);
cout << it1->second << it2->second;
// here it1->second=it2->second=3, although I would have expected it2 to be equal to map.end().
}

我可以用||而不是&&,但我也不确定这是正确的方法。我只想让 operator< 以能够在我的 map 中找到对象的方式实现,而不会出现任何错误,就像我链接到的代码中的情况一样。

谢谢。

最佳答案

是的,这个运算符实现没有多大意义。我建议:

  bool operator<(const myStruct& rhs) const {
return rhs.a < this->a || (rhs.a == this->a && rhs.b < this->b);
}

关于c++ - 如何比较结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11703853/

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