C++の初心者で、私はイテレータを発見しています。私はいずれかのコンテナを通してループのためにint
またはiterators
を使用できることを認識しています。例えば一般C++の整数または反復子とのループの相違点
- 、話す
i is an int: 1 4 8 i is an iterator: 1 4 8
を出力
#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; }
は、1つまたは他の方法を使用して任意の利点があると考えますか?
- もう一方よりも速いのですか?
- いつ
int
を使用し、iterator
を使用する必要がありますか?
C++ 11以降では、次のような範囲でも使用できます:for(int e:v){std :: cout << e << ""; } ' – Jarod42
また' auto i = v.begin() 'を実行することもできますので、型の比較的複雑な名前を指定する必要はありません – ForceBru
' int'バージョンはすべてのコンテナで一般化することはできません( 'list'、' set'など)、反復子(および上記に基づく範囲)は可能です。 – Chad