На ваш вопрос ответили, так что это всего лишь вводная информация о том, как вы могли бы обойти эту проблему:
Вы можете указать operator<
для своего типа, чтобы избежать необходимости использовать для него меньше функтора каждый раз, когда выиспользуйте его в set
.
#include <iostream>
#include <set>
struct MyType {
int value;
};
// added operator<
bool operator<(const MyType& l, const MyType& r) {
return l.value < r.value;
}
int main() {
std::set<MyType> my_set = {{3}, {2}, {1}};
for(const MyType& m : my_set)
std::cout << ' ' << m.value;
std::cout << "\n";
}
Вывод:
1 2 3
Если вы хотите использовать его с контейнерами на основе хеша (например, unordered_set
), вы можете аналогичным образом добавитьstd::hash<MyType>
класс, который будет использоваться по умолчанию для вашего типа.