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

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

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






Типи

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



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

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

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

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

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