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

时间:2013-08-29 18:11:21

标签: c++ vector

我有一些功能

void print_elem(const std::vector<int>::iterator it, const std::vector<int> &vec) {/*.....*/}

如果我忽略了向量是对原始对象的引用,我会得到向量的副本。为什么迭代器不一样?为什么迭代器也不需要作为参考?

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

1 个答案:

答案 0 :(得分:10)

迭代器模拟一个指针,它很可能是 一个,或者包含一个指向向量或其内容的指针。当你复制它时,副本实际上是一个不同的迭代器,但是它存储了相同的值,所以它仍然指向同一个东西,就像指针一样。