私は以前に一度similar questionと尋ねましたが、今は関連する問題があります。以下は出力が「見つからない」で、印刷される要素の数は2です。なぜこのstd :: mapキーが見つからないのですか?
positions.emplace(r,q);
行には要素が明示的に挿入されているため、マップのサイズは正しいので、なぜが見つからないのですか? p
はです(この例ではログに記録されていません)。
#include <map>
#include <iostream>
struct screenPoint {
float x = 0, y = 0;
screenPoint(float x_, float y_): x{x_}, y{y_}{}
};
bool operator<(const screenPoint& left, const screenPoint& right){
return left.x<right.x||left.y<right.y;
}
std::map<screenPoint, screenPoint> positions;
int main(int argc, const char * argv[]) {
auto p = screenPoint(593,271.5);
auto q = screenPoint(595.5,269.5);
auto r = screenPoint(599,267);
positions.emplace(p,q);
positions.emplace(r,q);
auto f = positions.find(r);
if (f == positions.end()){
std::cout << "not found";
} else {
std::cout << "found";
}
std::cout << std::endl;
std::cout << "number elements: " << positions.size() << "\n";
return 0;
}
私の他の質問では、私は&&を使用していて、それもうまくいきませんでした。 http://stackoverflow.com/questions/39690503/what-is-this-use-of-stdmap-doing –
@JeromeBaldridge更新されました。 2人のメンバーがいるので、より複雑になります。 – NathanOliver
タイは参照のタプルを作成するだけなので、結果として得られるタプルは自動的に良好な演算子を作成しますか? –