0

我正在定义一个使用列表类的模板类的函数。

我在这个列表类中定义了擦除函数,如果擦除成功则返回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();
    }
}

非常感谢你。

4

1 回答 1

1

是的你可以。它总是会被调用。它相当于:

{
  bool res = foo();
  if(res)
  {
    do_stuff();
  }
}

您甚至可以在以下情况下声明变量:

if(int res = int_foo())
{
  do_smth(res);
}
else // res == 0
{
  do_smth_else();
}

那是写在每本书里=)

于 2013-03-29T12:28:17.327 回答