C++ 将迭代器和向量传递给函数

C++ 将迭代器和向量传递给函数,c++,vector,C++,Vector,我有一些功能 void print_elem(const std::vector<int>::iterator it, const std::vector<int> &vec) {/*.....*/} void print_elem(const std::vector::iterator it,const std::vector&vec){/*..…*/} 如果我忽略了向量是对原始对象的引用,我会得到向量的副本。为什么迭代器的情况不一样?为什么迭代器不需要也是

我有一些功能

void print_elem(const std::vector<int>::iterator it, const std::vector<int> &vec) {/*.....*/}
void print_elem(const std::vector::iterator it,const std::vector&vec){/*..…*/}
如果我忽略了向量是对原始对象的引用,我会得到向量的副本。为什么迭代器的情况不一样?为什么迭代器不需要也是一个引用呢


例如,如果我想迭代向量,打印每个元素,并想在到达向量末尾时停止,除非我传递对向量的引用,否则迭代只会连续迭代第一个向量副本。但是如果我通过一个引用,迭代就会通过原始的向量对象。但是为什么迭代器不能像无引用的向量那样被复制呢?

迭代器对指针进行建模,它很可能是一个指针,或者包含一个指向向量或其内容的指针。复制时,副本实际上是一个不同的迭代器,但它存储相同的值,因此它仍然指向相同的对象,就像指针一样。

那么,将迭代器作为引用参数传递是否无关?值得注意的是,传递迭代器作为对函数的引用会导致错误;但当它是常量迭代器时就不是这样了。你知道为什么吗?有什么区别导致后者不是一个错误-谢谢