Как правильно объявить переменную-итератор из 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 шт):

Автор решения: KoVadim

Есть несколько способов. Обычно, сейчас никто не переживает и использует 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 для итераторов сейчас чуть ли не стандарт.

→ Ссылка