将迭代器返回到向量的函数

Function returning iterator to vector

本文关键字:函数 向量 迭代器 返回      更新时间:2023-10-16

为以下代码返回迭代器的最佳方法是什么?在下面的代码中,它没有为此行提供正确的输出

cout<<*p<<endl;

#include<iostream>
#include<vector>
using namespace std;
vector <int> :: iterator int_begin(vector <int> V);
int main()
{
vector <int> V;
V.push_back(3);
V.push_back(1);
vector <int> :: iterator p=int_begin(V);
cout<<*p<<endl;
return 0;
}
vector <int> :: iterator int_begin(vector <int> V)
{
cout<<*V.begin()<<endl;
return V.begin();
}

您正在按值将对象传递给int_begin()。你得到的是一个迭代器,它不会在函数调用之后存活下来std::vector。因此,在调用函数中,迭代器无效。

通过引用传递对象。

vector <int> :: iterator int_begin(vector <int>& V) // Passed by reference
{
cout<<*V.begin()<<endl;
return V.begin();
}