我正在定义一个使用列表类的模板类的函数。
我在这个列表类中定义了擦除功能,如果擦除成功则返回true,如果擦除失败则返回false,我在这里只需要调用此函数。
但是,我需要计算列表的大小n,并且只有当list.erase(itr.list_iter)调用返回true时我才想减少它。
更简洁的是,以下代码行是否会调用list.erase(itr.list_iter)函数并递减n并仅在成功时调用refresh()?或者它是否实际上没有删除列表中的元素?
void erase(iterator itr) {
if(list.erase(itr.list_iter)) {
--n;
refresh();
}
}
非常感谢。
答案 0 :(得分:1)
是的,你可以。它总会被调用。它相当于:
{
bool res = foo();
if(res)
{
do_stuff();
}
}
你甚至可以在if:
中声明变量if(int res = int_foo())
{
do_smth(res);
}
else // res == 0
{
do_smth_else();
}
这写在每本书中=)