map即使是指针也不能相等

map的key大小不能相同。否则覆盖。

#include <iostream>
#include <vector>
#include <map>

struct cmp {
    bool operator()(int* a, int* b) const {
        return *a < *b;
    } 
};

int main() {
    std::map<int*, int, cmp> m;

    int a = 10;
    int b = 10;
    int c = 20;
    m[&a] = 1;
    m[&b] = 2;
    m[&c] = 3;

    for (auto it = m.begin(); it != m.end(); ++it) {
        std::cout << it->first << " " << it->second << std::endl;
    }
    return 0;
}

最后发现只有2和3,1被覆盖了。

0xba469ff82c 2
0xba469ff824 3
文章目录