Для вектора можно использовать как итератор и указатель для доступа к элементам и перебирать их, например:C++ итераторы против указателя для вектора доступа
std::vector<int> x {0, 1, 2};
std::vector<int>::iterator it = x.begin();
int *begin = &x[0];
Оба итератора и указатель даст доступ к одному и тому же объекту. Однако, насколько мне известно, предпочтительным способом является использование итераторов (для любых контейнеров, кроме массивов). Есть ли для этого конкретная причина? (За исключением того факта, что при моем создании я предполагаю, что контейнер имеет определенную операцию [].)
Попробуйте указатель с 'std :: list'. – chris
Это потому, что std :: list не предоставляет оператора индексирования. Разве это единственная причина? Но тогда std :: list должен предоставить операцию .begin(), что не намного сложнее, чем запись операции [], так почему это так предпочтительнее? – JamesLens
К сожалению, я тоже прочитал эту часть сообщения. Притворись, что я сказал «std :: deque». Во всяком случае, указатели глупы. Итераторы ожидали семантики для всех контейнеров, независимо от того, что они должны делать, чтобы проходить через нее. Он даже не должен быть контейнером. – chris