Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КПИЯП_ОТВЕТЫ_3 ред.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
46 Кб
Скачать
☆

Int main(){

int a = 10, b = 20, c = 0;

asm{

mov eax, a

mov edx, b

add eax, edx

mov c, eax

}

cout << c;

return 0;

}

3.28

Ассоциативные контейнеры.

  • set

  • multiset

  • map

  • multimap

Особенности:

  • Классы set и multiset манипулируют множеством значений, одновременно являющихся клюючами.

  • Классы map и multimap манипулируют множеством значений, ассоциируемых с ключами.

Класс map

Ассоциативный массив, в котором хранятся пары ключ-значение, причем каждому ключу соответсвует одно единственное значение.

Особенности:

  • размер не фиксирован

  • не допускает дубликаты ключей

  • доступ к значению элементов массива может происходить по значению ключа

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

Созданий ассоциативного массива.

template < class Key, class T, class Cmp = less<Key>, class Allocator = allocator< pair < const Key, T > > >

class map;

Конструкторы:

  • создание пустого асс. массива, функция fcmp определяет поядок следования элементов массива:

explicit map ( const Cmp &fcmp = Cmp, const Allocator &a = Allocator() );

  • создание асс. массива, содержащего эл-ты массива ob

map ( const map< Key, T, Cmp, Allocator> & ob);

  • создание массива, состоящего из элементов, лежащих между итераторами start и end :

template < class InputIterator>

map ( InputIterator start, InputIterator end, const Cmp &fcmp = Cmp(), const Allocator &a = Allocator() );

3.29

Алгоритмы STL

Алгоритмы

  • Алгоритм-функция-манипулятор (инициализация, сортировки, поиска и т.п.), которая работает с элементами некоторого контейнера.

  • Некоторые алгоритмы можно применять к диапазону элементов, находящихся в контейнере.

  • Диапазон-последовательность целочисленных индексов элементов, допускающих произвольный доступ.

Алгоритмы инициализации

  • Fill,fill_n-заполнение диапазона заданным значением

  • Generate, generate_n-заполнение диапазона фунцией-генератора

  • Copy-копирование элементов диапазона

  • Copy_backward-копирование элементов диапазона в обратном порядке

  • Merge, inplace_merge-объединение двух упорядоченных последовательностей элементов в одну

  • Replace,replace_copy,replace_if,replace_copy_if-замена элементов диапазона.

  • Reverse, reverse_copy-реверсирование диапазона элементов

  • Swap,swap_ranges,iter_swap-обмен местами элементов

  • Rotate,rotate_copy-циклическая перестановка элементов

  • Next_permutation,prev_permutaton-формирование перестановок элементов последовательности

  • Random,shuffle-перетасовка

  • Remove,remove_if,remove_copy,remove_copy_if-удаление элементов диапазона

  • Unique,unique_copy-удаление дубликатов из заданного диапазона

Алгоритмы сортировки

  • Sort,partial_sort,partial_sort_copy,stable_sort-упорядочивание диапазона

  • Partition,stable_partition-упорядочивание диапазона элементов так, чтобы все элементы удовлетворяющие заданному условию, предшествовали всем остальным элементам.

  • Make_heap,pop_heap,push_heap,sort_heap-рабоота с «кучей»(предоставление для priority_queue)

Алгоритмы поиска

  • Adjacent_find-поиск пары совпадающих элементов

  • Find,find_end,find_first_of, find_if-поиск вхождения элементов

  • Binary_search-бинарный поиск в упорядоченной последовательности

  • Includes-проверка вхождения одной последовательности в другую

  • Search,search_n-поиск подпоследовательности

  • Lower_bound,upper_bound-определенгие элемента границы по заданному значению

  • Mismatch-поиск первого несовпадения двух последовательностей

  • Max_element, min_element-поиск элемента последовательности

  • Equalсравнение последовательностей

  • Equal_range-определение диапазона для вставки элементов без нарушения порядка последовательности

  • Lexicographical_compare-лексикографическое сравнение двух последовательностей

  • Min,max-сравнение двух элементов

Математически алгоритмы

  • Count-число элементов последовательности

  • Count_if-число элементов по заданному условию

  • Trancsorm-преобразование элементов диапазона

  • For_each-применение функции к диапазону элементов

Операции над множествами

  • Set_difference-выделение несовпадающих элементов двух последовательностей

  • Set_intersection-выделение совпадающих элементов двух последовательностей

  • Set_symmetric_difference-выделение симметричной разности двух последовательностей

  • set_union-объединение двух последовательностей

3.30

Итераторы

Итератор-объект, похожий на указатель и предназначенный для перемещения по содержимому контейнера (аналогично перемещению указателя по элементам массива).

Особенности:

  • Итераторы объявляются в различных контейнерах

  • Итераторы можно увеличивать, уменьшать, разыменовывать.

Основные виды итераторов

  • Итератор произвольного доступа - чтение и запись элементов путём произвольного доступа

  • Двунаправленный итератор - чтение и запись элементов путём перемещения вперёд или назад

  • Прямой итератор - чтение и запись элементов путём перемещения только вперёд.

  • Итератор ввода - только чтение элементов путём перемещения только вперёд

  • Итератор вывода - только запись элементов путём перемещения только вперёд

Итераторы, обладающие более широкими возможностями, можно использовать вместо более слабых итераторов.

3.31

Вспомогательные виды итераторов

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

  • Итератор потока - осуществляется доступ к элементам потока, делятся на итераторы потоков ввода и вывода.

  • Итератор вставки - предназначен для добавления элементов к цепочке объектов

  • Константный итератор - не допускает изменения данных, на которые он ссылается, формируется путём модификации основного итератора.

Примерр итератора потока:

3.31

Функторы

Функтор-класс, в котором определена операторная функция operator().

Существуют унарные и бинарные функторы. Бинарные функторы получают аргументы в порядке (first,second)

Встроенные функторы определены в <functional> и являются шаблонными классами, что требует типизации при использовании.

Встроенные бинарные функторы

  • Plus-сумма(first+second);

  • Minus- разность(first-second);

  • Multiplies- произведение(first*second);

  • Divides- частное от деления(first/second);

  • Modulus-остаток от деления(first/second

  • Equal-to- true если (first==second)

  • Not_equal_to-true если (first!=second)

  • Greater-true если (first>second)

  • Greater-equal-true если (first>=second)

  • Less - true если (first<second)

  • Less_equal - true если (first<=second)

  • Logical_and - true если ((first&&second)==true)

  • Logical_or - true если ((first||second)==true)

Встроенные унарные функторы

  • Logical_not - true если (first==false)

  • Negate - (-false)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]