共计 377 个字符,预计需要花费 1 分钟才能阅读完成。
练习 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 下的,不呈现不兼容景象
正文完