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

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

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






Типи

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



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

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

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

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Классификация потерь населения в очагах поражения в военное время Ядерное, химическое и бактериологическое (биологическое) оружие является оружием массового поражения...

Внешняя политика России 1894- 1917 гг. Внешнюю политику Николая II и первый период его царствования определяли, по меньшей мере три важных фактора...

Оценка качества Анализ документации. Имеющийся рецепт, паспорт письменного контроля и номер лекарственной формы соответствуют друг другу. Ингредиенты совместимы, расчеты сделаны верно, паспорт письменного контроля выписан верно. Правильность упаковки и оформления....

БИОХИМИЯ ТКАНЕЙ ЗУБА В составе зуба выделяют минерализованные и неминерализованные ткани...

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