C++函数返回迭代器类型时应注意的点
2016-11-05 16:41
218 查看
今天在学习C++ PRIMER第九章时,
课后练习9.5中,编写一个用迭代器查询vector内元素的函数,找到后返回迭代器,
一开始我的函数声明是这样的:
这导致了一个问题,vector形参传入的只是原vector的拷贝,
在函数结束后,拷贝的vector随之被销毁,这个时候指向该vector的迭代器将指向未知的区域,
返回迭代器会引发vector iterator not dereferencable的错误。
正确的方法是传入vector的引用,
课后练习9.5中,编写一个用迭代器查询vector内元素的函数,找到后返回迭代器,
一开始我的函数声明是这样的:
vector<int>::iterator iSearch(vector<int> v,int t);
这导致了一个问题,vector形参传入的只是原vector的拷贝,
在函数结束后,拷贝的vector随之被销毁,这个时候指向该vector的迭代器将指向未知的区域,
返回迭代器会引发vector iterator not dereferencable的错误。
正确的方法是传入vector的引用,
vector<int>::iterator iSearch(vector<int>& v,int t);这样在函数调用完毕后依然可以正确地返回迭代器。
相关文章推荐
- size()函数计算stirng类型长度的用法,注意返回值为size_type类型
- c++ lambda返回类型自动推导的一些需要注意的地方
- C/C++—— 写一个函数,它的参数为指向函数的指针,返回类型也为指向函数的指针
- C++函数返回值类型
- C++中函数定义返回类型和内部实现返回类型不同的原因
- c++中函数中变量内存分配以及返回指针、引用类型的思考
- C++ 二维数组作为函数返回值类型传递方式举例
- C++中函数返回值得问题--返回类型的引用和仅返回类型的区别
- C++中函数定义返回类型和内部实现返回类型不同的原因
- 探讨:C++中函数返回引用的注意事项
- C++基础---有返回值类型函数(返回引用类型)
- c/c++: c++函数返回类型什么情况带const
- c++中函数中变量内存分配以及返回指针、引用类型的思考
- 当C++函数的返回类型为一个类时
- [跨平台C++] 返回const char* 类型的函数样板
- C++基础---函数的返回类型
- C++基础---有返回值类型函数(返回非引用类型)
- C++引用与函数返回类型
- 函数返回类型为指针的时候的注意事项
- c++ 函数符号重载 返回类型是否为引用问题 剖析