русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Ітератори


Дата додавання: 2014-04-22; переглядів: 989.


Ітератори – це сутності, що нагадують вказівники. Вони використовуються для одержання доступу до окремих даних (які звичайно називаються елементами) в контейнері. Аони часто використовуються для послідовного пересування по контейнеру від елемента до елемента (цей процес називається ітерацією). Ітератори можна інкрементувати за допомогою звичайного оператора ++, після виконання якого ітератор пересунеться на наступний елемент. Розадресування здійснюється оператором *, після чого можна одержати значення елемента, на який посилається ітератор. В STL ітератор являє собою об’єкт класу iterator.

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

Двонаправлений ітератор, відповідно, може пересуватися в обох напрямках і реагує як на ++, так і на --.

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

Є два спеціалізовані типи ітеротів. Це вхідний ітератор, який може вказувати на пристрій вводу (cin чи вхідний файл) і зчитувати послідовно елементи даних в контейнер, і вихідний контейнер, який відповідно вказує на пристрій виводу (cout) чи вихідний файл і виводить елементи з контейнера.

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

 

Алгоритми

Алгоритми STL виконують різні операції над наборами даних. Вони були розроблені спеціальні для контейнерів, але можуть застосовуватися також до звичайних масивів С++. Це може дуже спростити роботу з масивами.

 

Алгоритм find()

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

#include<iostream>

#include<conio>

#include<algorithm>

using namespace std;

int arr[]={11,22,33,44,55,66,77,88};

int main()

{ int *ptr;

ptr=find(arr,arr+8,44);

cout<<"Pershyj object zi znachennam 44 v pozycii "

<<(ptr-arr+1)<<endl;

getch();

return 0;

}

 

Програма 15.1


<== попередня лекція | наступна лекція ==>
Алгоритми | Заголовочні файли


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн