我有點不解,爲什麼預期下面的代碼是不工作...這張地圖有什麼問題?
#include <iostream>
#include <map>
struct Foo {
int x,y,z;
Foo(int x,int y,int z) : x(x),y(y),z(z) {}
bool operator<(const Foo& other) const {
if (x > other.x) return false;
if (y > other.y) return false;
if (z > other.z) return false;
return true;
}
bool operator==(const Foo& other) const {
if (other.x != x) return false;
if (other.y != y) return false;
if (other.z != z) return false;
return true;
}
};
int main() {
Foo f(1,2,3);
std::map<Foo,double> map;
map[f] = 1.0;
std::cout << map[f] << "\n";
}
它打印0
而不是1
。我做錯了什麼?這裏還
代碼:http://ideone.com/fork/HMwPQ7
您在MyMap模板參數中鍵/值的反轉是_evil_! – YSC
@YSC as就是不會拋出的'at'函數......雷區代碼,就是這個代碼片段! – Quentin
@YSC因爲答案沒有提到那個邪惡,我允許自己編輯它。它是一個從真正的代碼,其中'key'是一個參數包遺留下來的,所以我不知道任何比扭轉鍵/值 – user463035818