我有这样的结构
struct AUTO{
int weight;
string name;
}
我有一个通过传递name
AUTO autoByName(String name, AUTO a[], int ll)
{
for(int i = 0; i < ll; i++)
{
if (name == a[i].name)
{
return a[i];
}
}
// AND HERE ?????
}
但我不知道函数结束时会返回什么。结构有null
吗?
答案 0 :(得分:2)
你有很多选择:
AUTO
一种表示&#34;无价值&#34;的方法。例如,通过使重量-1。或者通过添加标志。这非常难看;我不推荐它,即使它在实践中有点普遍。nullptr
。这也很难看,因为它迫使你处理指针的原因不是很好。bool &wasFound
参数。boost::optional
或std::pair<AUTO, bool>
完成相同的事情,但所有这些都包含在返回值中。这可能是最干净的。这就是std::map::find
的工作原理,例如。我建议#4,或者在罕见的情况下#5。