stl迭代器作为返回值会出什么问题?

初用STL,出现了很多问题,大家帮忙看一下,这几行代码有什么问题?难道迭代器不能作为返回值吗?classuser{public:intnum;user(inti):num... 初用STL,出现了很多问题,大家帮忙看一下,这几行代码有什么问题?难道迭代器不能作为返回值吗?
class user
{
public:
int num;
user(int i):num(i){}
};
list<user>::iterator f(list<user> u)
{
return u.begin();
}

int main()
{
list<user> u;
user use(1);
u.push_front(use);
list<user>::iterator iu=f(u);
cout<<iu->num<<endl;

system("pause");
}
运行时会出问题
展开
 我来答
云林之盟
2013-06-27 · 涵盖汽车、软件、医学等全方位知识体系
云林之盟
采纳数:166 获赞数:523

向TA提问 私信TA
展开全部
最好不要这样来返回一个迭代器,如果要返回一个迭代器,就应该更改f()函数为:
list<user>::iterator f(list<user>& u) //u需要加一个引用符号
{
return u.begin();
}
这样就可以正常运行了。
archmagee1
2013-06-27
知道答主
回答量:10
采纳率:0%
帮助的人:3.8万
展开全部
最好别用这种返回方式,没哪本书推荐你这样写,迭代器容易失效.你最好还是返回物体本身,或者它的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mia☆jiancha☆ce6608
2013-06-27 · TA获得超过1526个赞
知道小有建树答主
回答量:713
采纳率:100%
帮助的人:495万
展开全部
没什么 问题啊,只是有些可优化的地方
更多追问追答
追问
运行没有问题吗?
追答
没觉得这儿会有问题,只是这样用不太好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式