Memory numeric queue set stack utility vector
10.2 Послідовні контейнери
Вектори (vector), двосторонні черги (deque) і списки (list) підтримують різні набори операцій, серед яких є співпадаючі операції. Вони можуть бути реалізовані з різною ефективністю:
Операція | Метод | vector | deque | list |
Вставка в початок | push_front | - | + | + |
Видалення з початку | pop_front | - | + | + |
Вставка в конец | push_back | + | + | + |
Видалення з кінця | рор_bаск | + | + | + |
Вставка в довільне місце | Insert | (+) | (+) | + |
Видалення з довільного місця | Erase | (+) | (+) | + |
Довільний доступ до елементу | [ ], at | + | + | - |
Знак (+) означає, що відповідна операція реалізується за постійний час, не залежний від кількості елементів n в контейнері. Знак (+) означає, що відповідна операція реалізується за час, пропорційний n. Для малих n час операцій, позначених (+), може перевищувати час операцій, позначених (+), але для великої кількості елементів останні можуть виявитися дуже дорогими. Як видно з таблиці, такими операціями є вставка і видалення довільних елементів черги і вектора, оскільки при цьому всі наступні елементи потрібно переписувати на нові місця.
Отже, вектор – це структура, що ефективно реалізовує довільний доступ до елементів, додавання в кінець та видалення з кінця. Двостороння черга ефективно реалізує довільний доступ до елементів, додавання в обидва кінці і видалення з обох кінців. Список ефективно реалізує вставку та видалення елементів в довільне місце, але не має довільного доступу до своїх елементів.
Приклад роботи з вектором. У файлі знаходиться довільна кількість цілих чисел. Програма зчитує їх у вектор і виводить на екран в тому ж порядку.
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
Дата добавления: 2014-12-26; просмотров: 665;