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

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

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






Типи

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; просмотров: 688. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

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

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

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

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

Механизм действия гормонов а) Цитозольный механизм действия гормонов. По цитозольному механизму действуют гормоны 1 группы...

Алгоритм выполнения манипуляции Приемы наружного акушерского исследования. Приемы Леопольда – Левицкого. Цель...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

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