C++11. Есть multiset. Можно ли предать ему функцию, по которой буде сортировка? Например multiset, сортирующий строки по возрастанию количества символов в строке.

16 Окт 2019 в 12:41
129 +2
0
Ответы
1

Да, в C++11 есть возможность передать пользовательскую функцию для сравнения элементов в контейнере std::multiset. Для этого можно воспользоваться шаблонным параметром Compare при объявлении multiset.

Пример сортировки строк по возрастанию количества символов в строке:

#include <iostream>
#include <string>
#include <set>
// Функция сравнения строк по длине
struct Compare {
bool operator()(const std::string& a, const std::string& b) const {
return a.size() < b.size();
}
};
int main() {
std::multiset<std::string, Compare> strings;
strings.insert("apple");
strings.insert("banana");
strings.insert("orange");
for(const auto& str : strings) {
std::cout << str << std::endl;
}
return 0;
}

В данном примере мы создаем multiset строк с пользовательской функцией сравнения Compare, которая сравнивает строки по длине. При выводе элеметов множества, строки будут отсортированы по возрастанию длины символов.

19 Апр в 10:54
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир