Создание InputIterator, который не хранит value_type

Я создаю тип, который моделирует InputIterator, В моем приложении «пропустить первые сто тысяч элементов» разумно, и создание value_type дорого, поэтому я хочу, чтобы мой итератор создал value_type только когда разыменовывается, а не когда увеличивается.

Я мог легко сделать operator* вернуть value_type по значению. Но я не знаю, что делать с operator->, Как я могу вернуть указатель, если мой итератор не хранит value_type? Я боюсь проблем на всю жизнь с указателем на временную, и не хочу быть сожженным.

Я думал о том, чтобы не предоставлять operator->, но тогда у меня не было бы полного InputIterator,

3

Решение

Я считаю, что это будет работать, чтобы вернуть прокси-объект по значению от итератора operator->, Прокси будет иметь единственный элемент данных value_type и свой собственный operator-> возвращая указатель на этот элемент данных.

Время жизни прокси-объекта такое же, как и у любого другого объекта, возвращаемого по значению (как мой план для operator*), так что, хотя у меня есть указатель-временный, в этих обстоятельствах он используется до уничтожения прокси-объекта.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]