我正在尝试使用用户定义的结构作为 std::map 中的键。为了做到这一点,我在结构内部定义了比较运算符。然后我将类的两个实例添加到地图中。
#include <map>
#include <iostream>
struct Fraction {
int num, den; // numerator and denumenator
explicit Fraction() : num(1), den(1) {}
explicit Fraction(int num_, int den_) : num(num_), den(den_) {}
bool operator<(const Fraction& rhs) const {
return num * rhs.den < den * rhs.num;
}
};
int main() {
std::map<Fraction, int> mymap;
mymap[Fraction(100, 100)] = 1;
mymap[Fraction(200, 200)] = 2;
std::cout << mymap.at(Fraction(100, 100)) << std::endl;
std::cout << mymap.at(Fraction(200, 200)) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
我期望得到
1
2
Run Code Online (Sandbox Code Playgroud)
但结果是
2 …Run Code Online (Sandbox Code Playgroud)