Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи по програмуванні(14 лаб).doc
Скачиваний:
77
Добавлен:
16.05.2015
Размер:
1.43 Mб
Скачать

Для роботи з вектором необхідно:

1. Підключити заголовний файл

# Include "vector"

2. Оголосити робочу область:

using namespace std;

3. Оголосити вектор:

це можна зробити двома способами.

vector <int> vArray1;

vector <int> vArray2 (30);

У першому випадку вказується порожній вектор, а в другому початковий розмір.

4. Ініціалізація вектора

vector vVec (5,10);

for (int x = 0; x <5; x + +)

cout << vVec [x] << endl;

Для отримання інформацію про параметри вектора:

* Size () - скільки даних зберігатися

* Capacity () - скільки може зберігатися до зміни розміру

* Max_size () - максимальний розмір звичайно дорівнює найбільш великим доступному блоку пам'яті

Приклад роботи з вектором

1. Заповнити частину вектора необхідними даними.

У даному прикладі перші три елементи заповнюються цифрою два:

vVec.assign (3,2);

for (x = 0; x <5; x + +)

cout << vVec [x] << endl;

2. Отримати перший і останній елемент вектора, для цього є функції front () і back ().

vVec.assign (5,1);

vVec [0] = 0;

vVec [4] = 4;

cout << vVec.front () << "" << vVec.back () << endl;

3. Вставку елемента з переміщенням можна зробити функцією insert. Вставка проводиться в першу позицію з переміщенням елементів вниз.

for (x = 0; x <5; x + +)

cout << vVec [x] << "";

cout << endl;

vVec.insert (vVec.begin (), 25);

for (x = 0; x <6; x + +)

cout << vVec [x] << "";

cout << endl;

4.Поместіть число в кінець вектора скориставшись функцією push_back ():

vVec.push_back (99);

for (x = 0; x <7; x + +)

cout << vVec [x] << "";

cout << endl;

5. Видалити останній елемент зі скороченням розміру:

vVec.pop_back ();

for (x = 0; x <vVec.size (); x + +)

cout << vVec [x] << "";

cout << endl;

6. Для видалення используеться функція erase ():

vVec.erase (vVec.begin () +2, vVec.begin () +4);

for (x = 0; x <vVec.size (); x + +)

cout << vVec [x] << "";

cout << endl;

7. Для зміни розміру вектора используеться функція resize ():

vVec.resize (3);

for (x = 0; x <vVec.size (); x + +)

cout << vVec [x] << "";

cout << endl;

8. Заповнення масиву:

for (i = 0; i <n; i + +) for (i = 0; i <n; i + +)

v.puch_back (rand ()); v.puch_back (rand ()% 10);

9.Вставка елемента:

cout << "\ n Enter pos_ins"; cin >> pos_ins;

vector <char> :: iterator ch_p = ch.begin ();

ch_p = ch_p + pos_ins;

cout << "\ n Enter new_elem ="; cin >> new_elem;

if (pos_ins> = 0 && pos_ins <= ch.size ())

{Ch.insert (ch_p, 1, new_elem);}

10.Видалення елемента:

cout << "\ n Enter pos_ins"; cin >> pos_ins;

cout << "\ n size =" << ch.size ();

if (pos_ins> = 0 && pos_ins <= ch.size ())

{Ch.erase (ch.begin () + pos_ins, ch.begin () + pos_ins + 1)

Алгоритми

До цього ми подивилися основні прийоми використання STL колекцій на прикладі використання вектора. Це основа STL, але для того, щоб по - справжньому використовувати всю міць цієї бібліотеки, доведеться розширити наші знання. З використанням алгоритмів можливе створення дуже потужних і ефективних програм. За компактності такий код перевершує код, написаний на таких сучасних мовах, як Java і С #, і в значній мірі ефективніше останнього.

STL - алгоритми представляють набір готових функцій, які можуть бути застосовані до STL колекціям і можуть бути поділені на три основних групи (табл.11.1).

Таблиця 11.1 - Алгоритми бібліотеки стандартних шаблонів

Алгоритм

Призначення

adjacent_find ()

Виконує пошук суміжних парних елементів у послідовності. Повертає ітератор першої пари.

binary_search ()

Виконує бінарний пошук в упорядкованій послідовності.

copy ()

Копіює послідовність.

copy_backward ()

Аналогічна функції copy(), за винятком того, що переміщає в початок послідовності елементи з її кінця.

count ()

Повертає число елементів в послідовності.

count_if ()

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

equal ()

Визначає ідентичність двох діапазонів.

equal_range ()

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

fill ()

fill_n ()

Заповнює діапазон заданим значенням.

find ()

Виконує пошук діапазону для значення та повертає перший знайдений елемент.

find_end ()

Виконує пошук діапазону для підпослідовності. Функція повертає ітератор кінця підпослідовності в середині діапазону.

find_first_of ()

Знаходить перший елемент в середині послідовності, парний елементу в середині діапазону.

find_if ()

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

for_earch ()

Призначає функцію діапазону елементів.

generate ()

generate_n ()

Привласнює елементам у діапазоні значення, що повертаються породжуючою функцією.

includes ()

Визначає, чи включає одна послідовність всі елементи іншої послідовності.

inplace_merge ()

Виконує злиття одного діапазону з іншим. Обидва діапазони повинні бути відсортовані в порядку зростання елементів. Результуюча послідовність сортується.

iter_swap ()

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

lexicographical_compare ()

Порівнює дві послідовності за абеткою.

lower_bound ()

Виявляє перше значення в послідовності, що не менше заданого значення.

make_heap ()

Виконує пірамідальне сортування послідовності (піраміда, англійською мовою heap - повне двійкове дерево, що володіє тією властивістю, що значення кожного вузла не менше значення кожного з його дочірніх вузлів).

max ()

Повертає максимальне із двох значень.

max_element ()

Повертає ітератор максимального елемента в середині діапазону.

merge ()

Виконує злиття двох упорядкованих послідовностей, а результат розміщає в третій послідовності.

min ()

Повертає мінімальне із двох значень.

min_element ()

Повертає ітератор мінімального елемента в середині діапазону.

mismatch ()

Виявляє першу розбіжність між елементами у двох послідовностях. Повертає ітератори обох незбіжних елементів.

next_permutation ()

Утворює наступну перестановку (permutation) послідовності.

nth_element ()

Упорядковує послідовність таким чином, щоб всі елементи, менші заданого елемента Е, розташовувалися перед ним, а всі елементи, більші заданого елемента Е, - після нього.

partial_sort ()

Сортує діапазон.

partial_sort_copy ()

Сортує діапазон, а потім копіює стільки елементів, скільки ввійде в результуючу послідовність.

partition ()

Упорядковує послідовність таким чином, щоб всі елементи, для яких предикат повертає істину, розташовувалися перед елементами, для яких предикат повертає “неправду”.

pop_heap ()

Міняє місцями перший і попередній перед останнім елементи, а потім відновлює піраміду.

prev_permutation ()

Утворить попередню перестановку послідовності.

push_heap ()

Розміщує елемент на кінці піраміди.

random_shuffle ()

Безладно перемішує послідовність.

remove ()

remove_if ()

remove_copy ()

remove_copy_if ()

Видаляє елементи із заданого діапазону.

replace ()

replace_if ()

replace_copy ()

replace_copy_if ()

Заміняє елементи в середині діапазону.

reverse ()

reverse_copy ()

Змінює порядок сортування елементів діапазону на зворотній.

rotate ()

Виконує циклічне переміщення вліво елементів у діапазоні.

rotate_copy ()

search ()

Виконує пошук підпослідовності в середині послідовності.

search_n ()

Виконує пошук послідовності заданого числа однакових елементів.

set_difference ()

Створює послідовність, яка містить ділянки, що розрізняються, двох упорядкованих наборів.

set_intersection ()

Створює послідовність, що містить однакові ділянки двох упорядкованих наборів.

set_symmetric_difference ()

Створює послідовність, що містить симетричні ділянки, що розрізняються, двох упорядкованих наборів.

set_union ()

Створює послідовність, що містить об'єднання (union) двох упорядкованих наборів.

sort ()

Сортує діапазон.

sort_heap ()

Сортує піраміду усередині діапазону.

stable_partition ()

Упорядковує послідовність таким чином, щоб всі елементи, для яких предикат повертає істину, розташовувалися перед елементами, для яких предикат повертає “неправду”. Розбивання на розділи залишається постійним; відносний порядок розташування елементів послідовності не змінюється.

stable_sort ()

Сортує діапазон. Однакові елементи не переставляються.

swap ()

Міняє місцями два значення.

swap_ranges ()

Міняє місцями елементи в діапазоні.

transform ()

Призначає функцію діапазону елементів і зберігає результат у новій послідовності.

unique ()

Видаляє повторювані елементи з діапазону.

unique_copy ()

Виявляє останнє значення в послідовності, що не більше деякого значення.

upper_bound ()