2012-08-23 3 views
-3

Я знаю, что vector<double>::iterator возвращает произвольного доступа итераторы type.What это тип итератора, возвращаемый list<double>::iterator .а это двунаправленного итератора?тип итератора для списков

+0

Просто точка на decorum. Если у вас есть googled "list iterator bi-directional", вы бы нашли то, что вам было нужно. Вероятно, именно поэтому вас занижают. –

+2

'vector :: iterator' является * типом *, а не функцией. Он ничего не возвращает. Кроме того, вы имеете в виду «итератор произвольного доступа» или «итератор с произвольным доступом»? Мне нравится, что мои итераторы детерминированы ... –

+1

Кроме того, с [справочной страницы] (http://en.cppreference.com/w/cpp/container/list): 'iterator \t BidirectionalIterator'. Увидев, что перечисленные в ** типах членов ** вид очищает точку Керрека. – chris

ответ

3

Это двунаправленный, потому что вы все еще можете использовать ++ и - на нем. если вы можете делать только ++, это форвардный итератор (см. std :: forward_list).

+2

:)) Хорошо, я бы сказал, что вы можете использовать ++ и - * потому что * он двунаправленный, а не наоборот ... –

+0

Хм, я полагаю. Я думаю, что в любом случае это довольно ясно. – bstamour

+1

@ LuchianGrigore: Я бы сказал, как это сказал bstamour. двунаправленный итератор - это концепция. Если итератор удовлетворяет требованиям концепции двунаправленного итератора, то это двунаправленный итератор. –

6

Да, это bidirectional iterator.

n3337 23.3.5.1/1

Список представляет собой последовательность контейнер, который поддерживает двунаправленные итераторы

0

Хорошо, большая часть моего вопроса сам wrong.I понял после долгого изучения C++ ссылки . Поскольку мой вопрос не имеет большого смысла, я собираюсь ответить на него сам. vector<double>::iterator возвращение чего-то не имеет смысла. Это тип. Стандартная библиотека стандарта C++ сильно использует typedefs в классах для псевдонимов других типов.

Так vector<double>:iterator является type.To быть более точным является псевдонимом (с использованием ЬурейеЕ) .И, что псевдоним в случае vector<double>::iterator является в random-access Iterator type.In случае list<double>::iterator, iterator является псевдонимом bi-directional типа итератора ,

Это также аналогично vector<double>::size_type где size_type представляет собой тип, который является псевдонимом size_t типа

typedef size_t size_type т.е. присутствует в vector<double> классе.

Если вы обнаружили какие-либо заблуждения или ошибки. Пожалуйста, уточните.

Смежные вопросы