- •Void unsetf( fmtflags флаги );
- •Iostream& manip_name (iostream& stream){
- •If (stream.Rdstate() & ios::eofbit)…
- •Istrea& putback( char ch );
- •Istream& get ( char& ch );
- •Istream& get (char* buf, streamsize num);
- •Istream& get (char* buf, streamsize num, char delim);
- •Istream& getline (char* buf, streamsize num);
- •Istream& getline (char* buf, streamsize num, char delim);
- •Int_type peek();
- •Istream& read(char* buf, streamsize num);
- •Istream& seekg( off_type offset, seekdir origin);
- •Istream& seekg( pos_type pos);
- •Istrstream::istrstream( const char* buf);
- •Istrstream::istrstream( const char* buf, streamsize size);
- •Int main(){
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)
