C++ именованные требования: LegacyInputIterator
LegacyInputIterator это LegacyIterator, который может читать из указателя на элемент. LegacyInputIterator гарантирует адекватность только для алгоритмов одного прохода: как только LegacyInputIterator i был инкрементирован, все копии предыдущего значения могут быть признаны недействительными.
Требования
Тип It удовлетворяет LegacyInputIterator если
- Тип
Itудовлетворяет LegacyIterator - Тип
Itудовлетворяет EqualityComparable
И даны:
iиj, значения типаItилиconst Itreference, тип, обозначенный какstd::iterator_traits<It>::referencevalue_type, тип, обозначенный какstd::iterator_traits<It>::value_type
Следующие выражения должны быть допустимыми и иметь указанные эффекты
| Выражение | Возвращаемое значение | Равнозначное выражение | Заметки |
|---|---|---|---|
i != j |
является концептуально конвертируемым в bool |
!(i == j) |
Precondition: (i, j) находится в области ==.
|
*i |
reference, конвертируем в value_type |
Если i == j и (i, j) находятся в области == тогда это равнозначно *j. |
Предусловие: Выражение |
i->m |
(*i).m |
Предусловие: i возможно разыменовать.
| |
++i |
It& |
Предусловие: Постусловие: Постусловие: Любые копии предыдущего значения | |
(void)i++ |
(void)++i |
||
*i++ |
преобразумо к value_type
|
value_type x = *i; ++i; return x; |
Заметки
" В области ==" значит, что проверка равенства определена между двумя значениями итератора. Для итераторов ввода, проверка равенства не обязана быть определена для всех значений, и набор значений в области == могут изменяться в течение времени
reference для итератора ввода, который не является также LegacyForwardIterator не обязан быть ссылочного типа: разыменование входного итератора может вернуть прокси объект value_type сам по себе по значению (как в случае с std::istreambuf_iterator).
КонцептДля определения std::iterator_traits, следующий только для представления концепт определен. <tbody> </tbody>
где концепт только для представления |
(начиная с C++20) |
Смотри также
(C++20) |
указывает, что тип является итератором ввода, то есть значения, на которые он ссылается, могут быть прочитаны, и он может быть как пре-инкрементирован, так и пост-инкрементирован (концепт) |
| Iterator library | предоставляет определения для итераторов, свойств итераторов, адаптеров и служебных функций. |