Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Огляд операцій





Типи

value_type тип елемента

allocator_type тип розподільника пам'яті

size_type тип індексів, лічильника елементів і т.д.

iterator поводиться як value_type*

reverse_iterator переглядає контейнер у зворотному порядку

reference поводиться як value_type&

key_type тип ключа (тільки для асоціативних контейнерів)

key_compare тип критерію порівняння (тільки для асоціативних контейнерів)

mapped_type тип відображеного значення

Ітератори

begin() вказує на перший елемент

end() указує на елемент, що випливає за останнім

rbegin() вказує на перший елемент у зворотній послідовності

rend() вказує на елемент, що випливає за останнім у зворотній послідовності

Доступ до елементів

front() посилання на перший елемент

back() посилання на останній елемент

operator[] (i)доступ по індексі без перевірки

at (i) доступ по індексі з перевіркою

Включення елементів

insert( p, x ) додавання х перед елементом, на який указує р

insert( p, n, x ) додавання n копій х перед р

insert( p, first, last ) додавання елементів з [first: last] перед р

push_back( x ) додавання х у кінець

push_front( x ) додавання нового першого елемента (тільки для списків і черг із двома кінцями)

Видалення елементів

pop_back() видалення останнього елемента

pop_front() видалення першого елемента (тільки для списків і черг із двома кінцями)

erase( p ) видалення елемента в позиції р

erase( first, last ) видалення елементів з [first: last]

clear() видалення всіх елементів

Інші операції

size() число елементів

empty() контейнер порожній?

Capacity пам'ять, виділена під вектор (тільки для векторів)

reserve( n ) виділяє пам'ять для контейнера під n елементів

resize( n ) змінює розмір контейнера (тільки для векторів, списків і черг із двома кінцями)

swap( x ) обмін місцями двох контейнерів

==,! =, < операції порівняння

Операції присвоювання

operator=( x ) контейнеру присвоюються елементи контейнера х

assign( n, x ) присвоювання контейнеру n копій елементів х (не для асоціативних контейнерів)

assign( first, last ) присвоювання елементів з діапазону [first: last]

Асоціативні операції

operator[]( k ) доступ до елемента із ключем k

find( k ) знаходить елемент із ключем k

lower_bound( k ) знаходить перший елемент із ключем k

upper_bound( k ) знаходить перший елемент із ключем, більшим k

equal_range( k ) знаходить lower_bound (нижню границю) і upper_bound (верхню границю) елементів із ключем k

Контейнер vector-вектор.

Вектор vector в STL визначений як динамічний масив з доступом до його елементів по індексу.

template< class T, class Allocator=allocator< T> > class std:: vector{...};

де T – тип призначених для зберігання даних.

Allocator задає розподільник пам'яті, що за замовчуванням є стандартним.

Приклад

vector< int> a;

vector< double> x(5);

vector< char> c(5, '*');

vector< int> b(a); //b=a

Для будь-якого об'єкта, що буде зберігатися у векторі, має бути визначений конструктор за замовчуванням. Крім того, для об'єкта повинні бути визначені оператори < і ==.

Для класу вектор визначені наступні оператори порівняння:

==, <, < =,! =, >, > =.

Крім цього, для класу vector визначається оператор індексу [].

· Нові елементи можуть включатися за допомогою функцій

insert(), push_back(), resize(), assign().

· Існуючі елементи можуть видалятися за допомогою функцій

erase(), pop_back(), resize(), clear().

· Доступ до окремих елементів здійснюється за допомогою ітераторів

begin(), end(), rbegin(), rend(),

· Маніпулювання контейнером, сортування, пошук у ньому тощо можливо за допомогою глобальних функцій файлу (заголовка < algorithm.h>.

Асоціативні контейнери (масиви).

Асоціативний масив містить пари значень. Знаючи одне значення, що називається ключем (key), ми можемо дістати доступ до іншим, називаним відображеним значенням (mapped value).

Асоціативний масив можна представити як масив, для якого індекс не обов'язково повинен мати цілочисельний тип:

V& operator[](const K&) повертає посилання на V, що відповідає K.

Асоціативні контейнери - це узагальнення поняття асоціативного масиву.

Асоціативний контейнер map - це послідовність пар (ключ, значення), що забезпечує швидке одержання значення по ключі. Контейнер map надає двонаправлені Ітератори.

Асоціативний контейнер map вимагає, щоб для типів ключа існувала операція “< ”. Він зберігає свої елементи відсортованими по ключі так, що перебір відбувається один по одному.

Специфікація шаблона для класу map:

template< class Key, class, class Comp=less< Key>, class Allocator=allocator< pair> >

class std:: map

Визначено операцію присвоювання:

map& operator= (const map&);

Визначено наступні операції: ==, <, < =,! =, >, > =.

В map зберігаються пари ключ/значення у вигляді об'єктів типу pair.

Створювати пари ключ/значення можна не тільки за допомогою конструкторів класу pair, але й за допомогою функції make_pair, що створює об'єкти типу pair, використовуючи типи даних як параметри.

Типова операція для асоціативного контейнера - це асоціативний пошук за допомогою операції індексації ([]).

mapped_type& operator[] (const key_type& K);

Множина set можна розглядати як асоціативні масиви, у яких значення не грають ролі, так що ми відслідковуємо тільки ключі.

template< class, class Cmp=less< T>, class Allocator=allocator< T> > class std:: set{...};

Множина, як і асоціативний масив, вимагає, щоб для типу T існувала операція “менше” (<). Воно зберігає свої елементи відсортованими, так що перебір відбувається один по одному.

12.4. Зразок виконання роботи

Створити контейнер вектор розміром 10 цілого типу і наповнити його числами. Вивести його вміст використовуючи ітератор. Створити інший вектор з п’яти елементів рівних одиниці і вивести його вміст використовуючи ітератор. Потім після другого елементу вставити 10 елементів із значенням 9 і вивести його вміст на екран. Після цього знищити вставлені елементи і перевірити це вивівши вміст вектора на екран. Створити ще один вектор з трьох елементів користувацького типу і вивести його вміст на екран.







Дата добавления: 2014-11-10; просмотров: 725. Нарушение авторских прав; Мы поможем в написании вашей работы!




Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

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

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

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

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

Тактические действия нарядов полиции по предупреждению и пресечению групповых нарушений общественного порядка и массовых беспорядков В целях предупреждения разрастания групповых нарушений общественного порядка (далееГНОП) в массовые беспорядки подразделения (наряды) полиции осуществляют следующие мероприятия...

Studopedia.info - Студопедия - 2014-2026 год . (0.014 сек.) русская версия | украинская версия