Как новичок C++, я просто открываю итераторы. Я понимаю, что для любого цикла можно использовать либо int
, либо iterators
. Рассмотрим, напримерРазличия между циклами с целым числом или итератором в C++
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v;
v.push_back(1);
v.push_back(4);
v.push_back(8);
std::cout << "i is an int: ";
for (int i = 0; i<v.size();i++)
{
std::cout << v[i] << " ";
}
std::cout << std::endl;
std::cout << "i is an iterator: ";
for (std::vector<int>::iterator i = v.begin(); i!=v.end();i++)
{
std::cout << *i << " ";
}
std::cout << std::endl;
}
, который выводит
i is an int: 1 4 8
i is an iterator: 1 4 8
Вообще говоря,
- есть какие-либо преимущества использования одного или другого метода?
- Один быстрее, чем другой?
- Когда следует использовать
int
и когда следует использоватьiterator
?
Обратите внимание, что с C++ 11 у вас есть даже диапазон: 'for (int e: v) {std :: cout << e <<" "; } ' – Jarod42
И вы также можете сделать' auto i = v.begin() ', поэтому вам не нужно указывать (относительно сложное) имя типа – ForceBru
. Версия' int' не может быть обобщена во всех контейнерах ('list',' set' и т. д.), в то время как итераторы (и диапазон, основанный на выше) могут быть. – Chad