为什么我不能用迭代器访问const向量?

时间:2010-05-07 21:50:23

标签: c++ stl vector const

我的例子如下。我发现问题在函数void test的参数中是“const”。我不知道为什么编译器不允许。有人可以告诉我吗?感谢。

vector<int> p;

void test(const vector<int> &blah)
{
   vector<int>::iterator it;
   for (it=blah.begin(); it!=blah.end(); it++)
   {
      cout<<*it<<" ";
   }
}

int main()
{
   p.push_back(1);
   p.push_back(2);
   p.push_back(3);
   test(p);

   return 0;
}

1 个答案:

答案 0 :(得分:16)

iterator被定义为返回对包含对象的引用。如果允许,这将破坏向量的常量。请改用const_iterator