次の非常に基本的な質問があります。関数内の配列を埋めるために、従来の C 型ポインターの代わりに stl イテレーターを使用したいと考えています。C スタイルの方法で、次の例を意味します。
void f(double* v, size_t n) {
for (int i = 0; i < n; i++)
v[i] = 10; /* a more reasonable value in practice! */
}
次のようにイテレータを使用して、これを C++ スタイルに変換します。
void f(vector<double>::const_iterator first, vector<double>::const_iterator last) {
for(vector<double>::iterator it = first; it != last; it++)
*it = 10;
}
しかし、コンパイルエラーが発生します。iterator
代わりに使用すればconst_iterator
問題は解決します。しかし、それが正しい方法であるかどうか疑問に思っていましたか?私が考えたのでvector.begin()
、vector.end()
イテレータは定数です。
前もって感謝します!