Это меня смущает, я реализую пользовательский итератор, и я читаю здесь: http://en.cppreference.com/w/cpp/concept/InputIterator, что поведение *iter++
должно сначала использовать оператор разыменования, а затем увеличивать возвращаемое значение (которое копируется) на 1.Как переопределить * i ++ для пользовательского итератора C++?
у меня в пользовательском итераторе перекрываться как operator*
и operator++(int v)
, проблема заключается в том, что operator++(int v)
вызывается перед operator*
, когда я исполняю *iter++
, что правильное поведение, но не за то, что я хочу делать (я думаю?).
Если вы прочтете ссылку, вы увидите, что в таблице в последней строке говорится, что если вы выполните *iter++
, ваша реализация должна сначала разыменоваться, а затем увеличивать результат, который не является тем, что поведение по умолчанию.
Я действительно не могу понять, что делать, любые идеи?
Поняв ответ, заголовок вводит в заблуждение, извините!
Спасибо,
Йохан
Это правильное поведение –
@PaoloM Прежде всего, я начинающий C++, поэтому позвольте мне только извиниться за это заранее. Какое правильное поведение? Что делает мой код или что говорит сайт? Они делают разные вещи, как указано в вопросе. –
Правильное поведение заключается в том, что 'operator ++' вызывается до 'operator *'. Это стандартный приоритет оператора. –