C++11. Есть multiset. Можно ли предать ему функцию, по которой буде сортировка? Например multiset, сортирующий строки по возрастанию количества символов в строке.
Да, в 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, которая сравнивает строки по длине. При выводе элеметов множества, строки будут отсортированы по возрастанию длины символов.
Да, в 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, которая сравнивает строки по длине. При выводе элеметов множества, строки будут отсортированы по возрастанию длины символов.