Автор Тема: STL-i conteineric vorinna "forward iterator" ???  (Прочитано 980 раз)

Оффлайн Tiko

  • Newbie
  • *
  • Сообщений: 8
    • Просмотр профиля
STL-i conteineric vorinna "forward iterator" ???
« : Декабрь 06, 2008, 09:58:29 »
Joxovurd jan uzum em forward iterator gtnem.
Chem karum haskanam, te STL-i vor containeri iteratorn a forward iterator  ??? ??? ???

Оффлайн LinuXoiD

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 946
  • Повелеваю демонами, дрессирую пингвинов...
    • ICQ клиент - 242199323
    • Просмотр профиля
    • www.lug.am
    • Email
Re: STL-i conteineric vorinna "forward iterator" ???
« Ответ #1 : Декабрь 08, 2008, 01:01:17 »
2 Tiko

forward iterator то же что normal iterator,но не поддерживает декремент







Оффлайн XSER

  • Global Moderator
  • Hero Member
  • *****
  • Сообщений: 557
    • Просмотр профиля
    • Email
Re: STL-i conteineric vorinna "forward iterator" ???
« Ответ #2 : Декабрь 08, 2008, 01:09:42 »
Если соединить итераторы ввода и вывода, то получится однонаправленный итератор (forward iterator), который может перемещаться по цепочке объектов в одном направлении, за что и получил такое название. Для такого перемещения в итераторе определена операция инкремента (++). И разумеется, в однонаправленном итераторе есть операторы сравнения (== и !=), присвоения (=) и разыменовывания (*). Все эти операторы можно увидеть, если посмотреть, как реализован, например, алгоритм replace, заменяющий одно определенное значение на другое:
template <class ForwardIterator, class T>
void replace (ForwardIterator first, ForwardIterator last, const T& old_value,
              const T& new_value)
{
    while (first != last)
    {
        if (*first == old_value) *first = new_value;
        ++first;
    }
}


Чтобы убедиться в правильности работы всех операторов однонаправленных итераторов, составим программу, заменяющую в исходном массиве все единицы на нули и наоборот, т. е. произведем инверсию. С этой целью все нули изначально заменяются на некоторое нейтральное значение, например на двойку, затем все единицы обнуляются, а все двойки становятся единицами:
#include <algorithm>
#include <iostream>
using namespace std;
main(void)
{
  replace(init, init + 5, 0, 2);
  replace(init, init + 5, 1, 0);
  replace(init, init + 5, 2, 1);
  copy(init, init + 5, ostream_iterator<int>(cout, "n"));
}

Как видите, алгоритм replace, умело используя однонаправленные итераторы, читает значения, заменяет их и перемещается от одного к другому.

Оффлайн Tiko

  • Newbie
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: STL-i conteineric vorinna "forward iterator" ???
« Ответ #3 : Декабрь 09, 2008, 03:03:34 »
2 Tiko

forward iterator то же что normal iterator,но не поддерживает декремент

normal iterator erevi i nkati unes random access iterator ???
ete ha, uremn miajd dranum chi tarberutjun@.
forward iterator@  random access iteratoric tarbervum a nranov vor chuni hetevjal gorcoxutjunner@
+(+=), - (-=), [], --, <

Оффлайн Tiko

  • Newbie
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: STL-i conteineric vorinna "forward iterator" ???
« Ответ #4 : Декабрь 09, 2008, 03:05:27 »
joxovurd jan es gitem vor forward iterator-y inch hatkutjunnerov a oshtvac...
es inqs em iteratorner stexcel ev algorithmner voronq ashxatum en ajt iteratornerov u std-i iteratornerov.
im harc@ parzeln a te ka ardjoq ashxari vra forward iterator conceptiai iterator STL gradaranum, vor kanteineri iteratorn a std::forward_iterator_tag  ??? ??? ??? ???
ovinaki hamar
std::vector<>::iterator - random access iterator
std::list<>::iterator - bidirectional iterator
vor kanteineri iteratorn e forward iterator  ??? ??? ???