Не доходит до меня как ентими итераторами пользоватсья... Вот к примеру есть такой лист
typedef list<int> mylist;
void foo() { mylist list; mylist::iterator it; }
как мне скажем адресоваться к N-ому члену листа, можно это сделать? В MSDN используют только операторы ++\-- и все могу ли я сделать так например(это не работает но все таки)
it=list.begin(); it+=10;//т.е. к 10-му члену обращаемся...
Flex Ferrum
опубликован 18-01-2002 16:29 MSK
Значится так. Открываем документацию по STL (например на rsdn.ru) и читаем, что итераторы бывают трех типов - однонаправленные, двунаправленные и с произвольным доступом. Так вот. Итераторы и списка (если мне не изменяет память) - максимум двунаправленные. А об индексировании определенного элемента и речи быть не может. Эта операция может быть определена только на контейнере, и к итератору не имеет никакого отношения. Отсюда вывод - хочешь произвольного доступа к элементам - пользуйся вектором. Итераторы служат для последовательного перебора элементов контейнера.
STL_FINDER
опубликован 18-01-2002 17:20 MSK
Спасиб. теперь все стало на свои места, теперь дошло до меня ;)