Я знаю, что теперь это очевидно (задним числом), но в цикле for вы также можете попробовать:
std::vector<coords> & cha = * iter;
Кроме того, не то, о чем вы просите, а просто FYI, но векторы поддерживают итераторы с произвольным доступом. Это означает, что вы также можете написать:
for( size_t i=0; i<characters.size(); i ++ )
И, если вам нужно преобразовать обратно в итератор, вы можете использовать:
characters.begin() + i
Это не C ++ способ делать вещи, он нарушает общую философию итераторов, но у него есть свои применения.