Как правильно объявить переменную-итератор из std? C++
У меня есть массив из std std::array<buffer_type, buffer_size> buffer;. Он представляет собой, как понятно, буфер. Мне нужно хранить переменную, которая указывала бы на какую-либо позицию в этом буфере. Как правильно объявить такую переменную? Я попробовал сделать так:
std::array<buffer_type, buffer_size> buffer;
std::array<buffer_type, buffer_size>::const_iterator current_symbol;
Компилятор не ругается, но у меня стойкое ощущение, что я делаю что-то не так. Можно ли как-то сократить эту огромную строку? Или же есть другой способ записи?
Upd: Буфер и итераторы - это переменные-члены пользовательского класса
Ответы (1 шт):
Есть несколько способов. Обычно, сейчас никто не переживает и использует auto для таких целей.
auto current_symbol = buffer.cbegin();
и все готово. Плюс такого способа очевиден - переменная всегда инициализирована и ее тип автоматом будет определен компилятором. Но иногда хочется большего. В этом случае я обычно делаю так
Вначале объявляю свой тип
using my_buffer = std::array<buffer_type, buffer_size>;
теперь можно написать вот так
my_buffer buffer;
или так
my_buffer::const_iterator current_symbol;
или даже сделать так
using my_buffer_citer = my_buffer::const_iterator;
my_buffer_citer current_symbol;
но auto для итераторов сейчас чуть ли не стандарт.