Скажи, у меня есть
std::vector<SomeClass *> v;
в моем коде, и мне нужно очень часто обращаться к его элементам в программе, зацикливая их вперед и назад.
Какой самый быстрый тип доступа между этими двумя?
Доступ к итератору:
std::vector<SomeClass *> v;
std::vector<SomeClass *>::iterator i;
std::vector<SomeClass *>::reverse_iterator j;
// i loops forward, j loops backward
for( i = v.begin(), j = v.rbegin(); i != v.end() && j != v.rend(); i++, j++ ){
// some operations on v items
}
Доступ по индексам (по индексу)
std::vector<SomeClass *> v;
unsigned int i, j, size = v.size();
// i loops forward, j loops backward
for( i = 0, j = size - 1; i < size && j >= 0; i++, j-- ){
// some operations on v items
}
И предлагает ли const_iterator более быстрый способ доступа к векторным элементам в случае, если мне не нужно их изменять?