Вопрос по информатике:
C++11. Есть multiset. Можно ли предать ему функцию, по которой буде сортировка? Например multiset, сортирующий строки по возрастанию количества символов в строке.
Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок - бесплатно!
- 06.06.2015 00:23
- Информатика
- remove_red_eye 6528
- thumb_up 46
Ответы и объяснения 2
Вы порождаете спам, который решается запросом в поисковике.
Ссылка на документацию:
(Удаленная ссылка на документацию на сайте cplusplus com, в поиске наберите multiset, вам необходима документация про конструктор данного класа)
(Для модераторов: прочитайте приложение после ответа, размещение ссылки в ответе не противоречит правилам сообщества)
Простенькая программа, как пример использования multiset и его сортировки строк по возрастанию.
Also, для сортировки в multiset, необходимо просто создать функциональный объект (структуру с перегруженным оператором () ) и добавить её в шаблонный конструктор.
Спасибо за отметку "Лучший ответ" и нажатую кнопочку "Спасибо" тут и в моем аккаунте.
#include
#include
#include
struct compareStructure
{
bool operator() (const std::string& firstValue, const std::string& secondValue) const
{
return ( firstValue.size() < secondValue.size() );
}
};
int main()
{
std::multiset multisetExample;
multisetExample.insert("verylongSomeString");
multisetExample.insert("someString");
multisetExample.insert("longSomeString");
for (const auto& el : multisetExample)
{
std::cout << el << std::endl;
}
return 0;
}
Приложение для модераторов:
Ссылка не нарушает правил сообщества в соответствии с параграфом "§3. Услуги Сервиса", пунктом "Предоставление ответа на вопрос".
Цитата:
Размещённый в Сервисе ответ должен содержать решение всех проблем, содержащихся в вопросе.
Ответом на вопрос не может быть размещенная в Сервисе ссылка на другой интернет-источник, как и копия ответа, ранее размещённого в Сервисе другим Пользователем.
Ответ на вопрос из области точных предметов, требующий проведения соответствующих расчётов, не может состоять только из конечного результата, а должен содержать также упомянутые выше расчёты. Ответ должен содержать объяснение проблемы, указанной Пользователем таким образом, чтобы он мог понять, как следует решать данную проблему.
Ответ содержит исчерпывающее решение проблемы, ссылка не является ответом на вопрос, а лишь дополнением к нему, как ровным счетом не является ссылкой на копию ответа на данном или стороннем сервисе.
Пользователь способен понять решение проблемы и без ссылки на сторонний ресурс.
>> Ссылка в данном случаи необходима как дополнительный справочный материал на документацию по языку программирования C++, так же наличие ссылки позволяет избежать появления банальных вопросов наподобие данного.
! Важно !
В частности прошу заметить что в соответствии с параграфом "§9. Политика конфиденциальности и контент третьих лиц", администрация сайта не запрещает размещать ссылки на Контент Третьих Лиц, ровно, как и не несет ответственности за данный контент.
В связи с вышеизложенным, прошу не удалять ссылку на сторонний ресурс.
- 06.06.2015 01:42
- thumb_up 47
//Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64
#include
#include
#include
using namespace std;
template
class MyMultiset
{
public:
void InsertElement(const string& str)
{
m.insert(str);
}
void PrintSorted(void(*SortMultiset)(multiset))
{
SortMultiset(m);
}
private:
multiset m;
};
template
void SortMultiset(multiset m)
{
auto it = m.begin();
auto comp = m.value_comp();
do
{
cout << " " << *it << endl;
}
while (
comp(*it++, *m.rbegin())
);
}
int main()
{
MyMultiset m;
m.InsertElement("hi world");
m.InsertElement("simple text");
m.InsertElement("etc");
m.PrintSorted(SortMultiset);
}
- 07.06.2015 23:14
- thumb_up 45
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.