27項 コンテナのconst_iteratorをiteratorに変換するには、distanceとadvanceを使う
コンテナのconst_iteratorをiteratorに変換するには、distanceとadvanceを使う
const_iteratorは暗黙的にiteratorに変換されないので、明示的に変換する必要があります。
変換の代わりに、iteratorがconst_iteratorと同じ所を指すようにするには、distanceとadvanceを使います。
typedef vector<T>::iterator Iter; typedef vector<T>::const_iterator ConstIter; Iter i(c.begin()); // iはコンテナの先頭を指しておく advance(i, distance<ConstIter>(i, ci)); // iとci(const_iteratorとして)の // 間の距離を計算したあと、 // その距離だけiを移動する
distance呼び出し時に