小编use*_*283的帖子

以结构为键的映射工作不正确

我正在尝试使用用户定义的结构作为 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)

c++ dictionary

0
推荐指数
1
解决办法
71
查看次数

标签 统计

c++ ×1

dictionary ×1