练习6.33:编写一个递归函数,输出vector对象的内容
问题复现
如题,笔者在完成练习6.33时,根据题意写出的代码如下
void myPrint(vector<int> v,vector<int>::iterator it) {
if (it != v.end()) {
cout << *it;
myPrint(v, it++);
}
}
int main() {
vector<int> v = { 1,2,3,4 };
myPrint(v,v.begin());
return 0;
}
试图在递归中使用迭代器,一运行发现报错,报错提示:vector的迭代器不兼容
原因:
后百度查阅知,myVector传入的是普通形参,运行时会先将实参v拷贝一份,拷贝之后的不是原来的v的迭代器了,这时再与原来的v.end()作比较就提示迭代器不兼容了
解决方法:
将形参v改为引用,这时迭代器就都是同一个v下的,不出现不兼容现象
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。