const_iterator と iterator のみの使用についての質問です。より具体的には、distance() を使用します。以下は、ユーザーが (アプリケーションの前の方で) 入力した "fav_games" のリストを作成する基本的なコードです。番号付きリストを出力するために、ベクトルの「インデックス」も削除したかったのです。
部分コード:
int main()
{
vector<string> fav_games;
vector<string>::const_iterator iter; // const_iterator no worky with "distance()"
if (fav_games.size() > 0) {
cout << "\n\nCurrent game list: \n";
for (iter = fav_games.begin(); iter != fav_games.end(); ++iter)
{
cout << distance(fav_games.begin(), iter) << ". " << *iter << endl;
}
}
return 0;
}
私の質問は、「const_iterator」が機能しない理由です。代わりに「iterator」を使用する必要があります。その背後にある「理論」を探しています。"distance()" は "const_iterator" ではなく "iterator" を期待しているように見えます。..どうして?
「const_iterator」を使用した場合のコンパイルエラーを参照してください。
エラー 1 エラー C2782: 'iterator_traits<_Iter>::difference_type std::distance(_InIt,_InIt)': テンプレート パラメーター '_InIt' があいまいです z:\micah\c++\favgames\favgames\favgames.cpp 49 1 favgames
ありがとう!