std :: vectorのように、コンテナを反復処理する方法を学んだことから、次のようにイテレータを使用することができます。
for(vector<int>::iterator it = numbers.begin(); it != numbers.end(); it++)
私の質問は、standatdを使用してコンテナーを反復処理しないのはなぜですか。関数を、、およびfor
として呼び出す必要がないため、より高速です。
私が試したところ、イテレータを使用するよりもX30を使用する方が高速であることがわかりました。
私はこのコードを書きました: numbers.begin()
numbers.end()
for
vector<int> numbers;
for (int i = 0; i < 5000000; i++)
{
numbers.push_back(i);
}
time_t t = time(0);
struct tm * now = localtime(&t);
cout << now->tm_hour << ":" << now->tm_min << ":" << now->tm_sec << "\n";
for(vector<int>::iterator it = numbers.begin(); it != numbers.end(); it++)
{
*it = 7;
}
t = time(0);
now = localtime(&t);
cout << now->tm_hour << ":" << now->tm_min << ":" << now->tm_sec << "\n";
int size = numbers.size();
for (int i = 0; i < size; i++)
{
numbers[i] = i;
}
t = time(0);
now = localtime(&t);
cout << now->tm_hour << ":" << now->tm_min << ":" << now->tm_sec;
出力は次のとおりです。
19:28:25
19:28:56
19:28:57