Как отсортировать набор по разыменованным значениям? [Дубликат]

0

Предположим, что у меня есть set std::set<*int> и я хочу, чтобы элементы сортировались по целому числу, на которое они указывают, а не по типу указателя; есть ли какая-то стандартная функция comp я могу использовать из библиотеки std? Если нет, как бы объявить такой набор?

Я предполагаю, что мне нужно будет определить мою собственную функцию сравнения, но как это выглядит на практике?

Теги:
set

1 ответ

3
Лучший ответ

Используя решение из Sort a std :: list <myclass *> с myclass :: operator <(myclass & other), он выглядит следующим образом:

template <typename T>
struct PComp
{
    bool operator ()(const T* a, const T* b) const
    {
       return *a < *b;
    }
};

std::set<int*, PComp<int> > my_set;
  • 0
    Круто, я бы никогда не догадался об этом, спасибо!
  • 0
    Пожалуйста. Не нужно догадываться - просто подумайте, какие требования предъявляются к параметрам шаблона. Использование такого компаратора, как это, довольно распространено, и это довольно ванильно. :)
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню