比較を正しく設定するのに苦労しています。これが私の問題の例です。私のコードは誤って{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<を実装したいだけです。
ありがとう。