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

16 Окт 2019 в 12:41
147 +1
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 Апр 2024 в 10:54
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир