У меня есть набор кортежей из 3 целых чисел, и я не хочу дубликатов. То есть, я не хочу 2 записи с одинаковыми 3 значениями.
И вот мой код.
struct Key{
unsigned a;
unsigned b;
unsigned c;
public:
Key(unsigned _a, unsigned _b, unsigned _c) :
a(_a),
b(_b),
c(_c) {}
bool operator<(const Key& rhs) const
{
if (a < rhs.a) {
return true;
}
if (b < rhs.b) {
return true;
}
if (c < rhs.c) {
return true;
}
return false;
};
};
std::set<Key> myset;
Но иногда я вижу дубликаты в myset
. Я не могу точно понять, какая последовательность приводит к добавлению дублирующей записи. Это не всегда происходит.
Мой вопрос в том, есть ли что-то внутренне неправильное с моей функцией operator<
?