質問です。

class X
{
 vector<int> v;
public:
 void show() const;
 ...
};

void X::show() const {
 for(vector<int>::iterator i = v.begin(); i != v.end(); i++) {
  cout << *i << endl;
 }
}

みたいなコードを書いたらコンパイルエラーになりました。それでiteratorをconst_iteratorに
するとエラーでなくなります。それは、たぶん、showがconstだからかなとも思うのですが、
ちょっと納得がいきません。この解釈でよいのでしょうか。
v自身はconst vector<int>ではないので、const_iteratorでなくてもいいような気もするのですが。