次のソリューションの1つが他のソリューションよりもはるかに遅い理由を知りたいです。次のコードを考えてみましょう。
// create a very long string
int x,y;
bool b;
char c[10000];
for (x=0;x<10000;x++)
c[x]='a';
string s(c);
今、文字列を繰り返し処理し、各文字を他の文字と比較したいと考えています。最初のソリューションは、タスクを 5 秒で完了します。
for (y=0;y<100000;y++){
for (x=0;x<10000;x++){
b = (s[x]=='a');
}}
そして21秒で2番目:
string::iterator begin = s.begin();
string::iterator end = s.end();
string::iterator i;
for (y=0;y<100000;y++){
for (i=begin;i<end;i++){
b = (*i=='a');
}}
なぜ 2 番目は非常に遅いのですか?