作者tyc5116 (累人啊....)
看板C_and_CPP
标题[语法] find_if找不到的时候
时间Sat Nov 7 21:25:34 2009
如题,请问一下,我有一个函式,回传值是这样
return *(find_if(Load.begin(),Load.end(),FindOBByID(vOBID)));
^^^^^functor
若很不幸的,没找到作何元素,指标会移到Load.end(),此时会有错误
请问我要怎麽拦下这个错误进行处理呢?
try catch我不知道怎麽表示
以及,STL有没有内部的指令有在处理这个情况呢?谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.18.48.28
1F:→ iamivers0n:你应该先检查是不是end()再dereference 11/07 21:30
2F:→ tyc5116:这我知道,我想知道的是,如果iterator移到end,表示没找到 11/07 22:03
3F:→ tyc5116:那我return该传出什麽来表示没有找到.. 11/07 22:04
4F:→ tinlans:当然是传回一个跟 Load.end() 做 == 运算结果必为 true 的 11/07 22:37
5F:→ tinlans:iterator。 11/07 22:37
6F:推 avhacker:你应该先考虑的是如何回传「找不到」这档子事 11/08 01:27
7F:→ tyc5116:我想表达的就是av大所说的...但我不知道该如何表达 11/08 12:58
8F:推 avhacker:如果坚持回传的是一个已经 dereference 过的值,那麽就先 11/08 21:53
9F:→ avhacker:检查 find_if 结果是否为 end(), 若是则 throw, 否则可以 11/08 21:54
10F:→ avhacker:将 dereference 後的结果 return.但这样可能会有效能问题 11/08 21:54
11F:→ avhacker:这只是其中一种手法,该怎麽做则是你自己要评估的 11/08 21:55