1. ホーム
  2. c++

[解決済み] なぜインデックスではなくstring::iteratorを使用するのですか?重複

2022-03-07 14:33:31

質問

<ブロッククオート

重複の可能性があります。
なぜ配列のインデックスではなくイテレータを使用するのですか?

string::iterator it;
for (it = str.begin(); it < str.end(); it++) 
    cout << *it;
cout << endl;

なぜダメなのか

for (int i = 0; i < str.size(); i++)
    cout << str[i];
cout << endl;

string::iteratorは範囲チェックもしないようです。なぜ string::iterator インデックスではなく

ありがとうございます。

解決方法は?

インデックスを使用できるのは、ランダムアクセス(指定した位置への直接アクセス)をサポートするコンテナのみです。

イテレータは、あらゆるコレクション/データ構造にアクセスする統一された方法を提供します。コードをリファクタリングする際の柔軟性は計り知れないものがあります。