Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Чтобы использовать множество или мультимножество в программе необходимо включить в нее заголовочн

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 9.11.2024

20.

Множества и мультимножества

Множества и мультимножества автоматически сортируют свои элементы по некоторому критерию. Они отличаются только тем, что мультимножества могут содержать дубликаты, а множества — нет (рис. 1.).

Чтобы использовать множество или мультимножество в программе, необходимо включить в нее заголовочный файл <set>:

#include <set>

Типы множества и мультимножества определяются как шаблоны классов в пространстве имен std:

namespace std {

template <class Т.

class Compare = less<T>,

class Allocator = allocator< T > >

class set;

template <class T,

                       class Compare =less<T>,

                       class Allocator = allocator<T> >

         class multiset;

}

Элементы множества или мультимножества относятся к произвольному типу Т, поддерживающему присваивание, копирование и сравнение по критерию сортировки. Необязательный второй параметр шаблона определяет критерий сортировки. По умолчанию используется критерий less. Объект функции less сортирует элементы, сравнивая их оператором < .  Необязательный третий параметр шаблона определяет модель памяти.  По умолчанию используется модель allocator, определенная в стандартной библиотеке С++.

Множества и мультимножества, как и все стандартизированные классы ассоциативных контейнеров, обычно реализуются в виде сбалансированного бинарного дерева. В стандарте такая реализация не указана, но она обусловлена требованиям к сложности операций над множествами и мультимножествами.

Главное достоинство автоматической сортировки заключается в том, что бинарное дерево обеспечивает хорошие показатели при поиске элементов с конкретным значением. Функции поиска в них имеют логарифмическую сложность. Например, чтобы найти элемент в множестве или мультимножестве, содержащем 1000 элементов, процедуре поиска по дереву (функции класса) потребуется выполнить в среднем около 1/50 от количества сравнений при линейном поиске (алгоритм).

Тем не менее автоматическая сортировка также накладывает важное ограничение на множества и мультимножества: значение элементов нельзя изменять напрямую, потому что это может нарушить правильный порядок их расположения. Следовательно, чтобы изменить значение элемента, необходимо удалить элемент со старым значением и вставить элемент с новым значением. Этот принцип нашел свое отражение в интерфейсе:

- множества и мультимножества не поддерживают прямое обращение к элементам;

- при косвенном обращении через итераторы действует ограничение: с точки зрения итератора значение элемента является константным.

Операции над множествами и мультимножествами Операции создания, копирования и уничтожения

Таблица 1. Конструкторы и деструктор множеств и мультимножеств

Операция

Описание

set c

Создает пустое множество или мультимножество, не содержащее ни одного элемента

set c(op)

Создает пустое множество или мультимножество, использующее критерий сортировки ор

set c1(c2)

Создает копию другого множества или мультимножества того же типа (с копированием всех элементов)

set c(beg,end)

Создает множество или мультимножество, инициализированное элементами интервала [beg,end)

set c(beg,end,op)

Создает множество или мультимножество с критерием сортировки ор, инициализированное элементами интервала [beg,end)

c.~set()

Уничтожает все элементы и освобождает память

В таблице символами «set» обозначена одна из следующих конструкций:

- set<Elem> — множество с сортировкой по критерию less<> (оператор <);

- set<Elem,op> — множество с сортировкой по критерию ор;

- multiset<Elem> — мультимножество с сортировкой по критерию less<> (оператор <);

- multiset<Elem,op> — мультимножество с сортировкой по критерию ор.




1. синяки на коже пульс 56 в минуту АД 100-50 мм
2. правовых отношений
3. тема памятки и иллюстративный материал в соответствии с темой
4. Дипломная работа- Понятие аренды в гражданском прав
5. СХЕМА САМОАНАЛИЗА И САМООЦЕНКИ УРОКА УЧИТЕЛЕМ
6. Уральский радиотехнический колледж им
7. тема Реформы Столыпина
8. Тема 6. Организационные элементы корпоративного управления 1
9. СНВ-III обеспечение мировой безопасности
10. Особенности естественного, миграционного и брачного движения сельского населения в Польше и Беларуси
11. тематика Молодых Ауд
12. Реферат- Интерфейс пользователя с системой
13. Функції вчителя його соціальнопедагогічні якості і вміння
14. Тема 1 Контроль и аудит в РФ 1
15. Курсовая работа- Особенности аудиторской деятельности
16. нравственность труда
17. Государственное пенсионное страхование
18. тематических решений стандартных или совсем неординарных одним словом ' это все вам позволит создать свой
19. ТЕМА КОНСТРУКТОРСКОЙ ДОКУМЕНТАЦИИ МАСШТАБЫ Москва МЕЖГОСУДАРСТВЕННЫЙ СТАНДАРТ
20.  На основании данных таблицы рассчитать недостающие показатели и дать оценку выполнения плана по ассортиме