Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Контейнери послідовностей

Контейнери послідовностей організують набори об’єктів однакового типу Т у строго лінійні послідовності. У STL визначені такі контейнерні типи:

· Т а[n], тобто звичайні типи масивів мови С++, які забезпечують вільний доступ до послідовності фіксованої довжини n (вільний доступ означає, що час доступу до і-го елемента сталий, тобто не залежить від і);

· vector < T > забезпечує вільний доступ до послідовності змінної довжини зі сталим часом приписування та вилучення елементів в кінці послідовності;

· deque < T > забезпечує вільний доступ до послідовностей змінної довжини зі сталим часом приписування та вилучення елементів у кінці послідовності;

· list < T > забезпечує лінійний за часом доступ до послідовності змінної довжини (О(n), де n — поточна довжина послідовності), при цьому час приписування та вилучення елементів у будь-якому місці послідовності сталий.

Може виявитися дивним, що до цього списку включені масиви, але це пов’язано з тим, що всі параметричні алгоритми STL розроблені так, щоб забезпечити роботу з масивами в такий самий спосіб, як вони працюють з іншими видами послідовностей.

Раніше було наведено приклади використання параметричного алгоритму reverse. Ще один випадок, коли багато алгоритмів STL працюють зі стандартними типами С++, подають потоки, визначені в стандартній бібліотеці iostream мови С++; багато алгоритмів можуть вводити дані з потоку вводу та виводити їх у потоки виводу.

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

Приклад 8.2. Параметричний алгоритм reverse для списку.

#include <iostream.h>

#include <algo.h>

#include <list.h>

#include <assert.h>

list<char> lst(char* s)

//Перетворює рядок s до структури list<char>

//(порожній символ, який закінчує рядок до структури

//не включається).

{

list<char> x;

while (*s!=`\0’)

x.push_back(*s++);

returu x;

}

int main ()

{

cout << «Demonstreting generic reverse algorithm on a list.»<<end1;

list <char> list1 = lst(«mark twain»);

reverse(list1.begin(),list1.end());

assert (list1 == lst («niawt kram»));

}

Аналогічний приклад можна навести і для дека. Загалом, вектори, списки та деки не в усіх випадках взаємозамінні, але в розглянутому прикладі кожний із контейнерів працює однаково добре. Це пов’язано з тим, що функції-члени push-back (), begin() та end() мають однаковий абстрактний зміст, хоч і реалізуються по-різному: вектори подаються за допомогою масивів, списки подаються через вузли з двома зав’язками (структури, які мають одне інформаційне поле, та два покажчики: на попередній та на наступний елементи списку), а деки реалізуються за допомогою дворівневої структури масивів. Для користування має бути зрозумілим, що для різних контейнерів параметрична функція, загалом, має різну продуктивність. У розглядуваному випадку ця різниця у продуктивності незначна, але в інших випадках, коли обробляються довші послідовності, вибір правильного контейнера може забезпечити істотніший виграш у продуктивності.




Переглядів: 206

<== попередня сторінка | наступна сторінка ==>
Основні компоненти STL | Впорядковані асоціативні контейнери

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.006 сек.