【问题标题】:pop objects out of a stack [closed]从堆栈中弹出对象[关闭]
【发布时间】:2012-10-06 02:21:35
【问题描述】:

假设我想从堆栈中弹出对象并检查它们的状态,无论是FUP(朝上)还是不是。

我想继续这样做,直到堆栈为空或实例的状态未朝上为止;在这种情况下,我需要推回这个实例并停止循环。

这是一种方法:

bool isfup = true;

while(pop(stack, &ins) && isfup = ins->state == FUP)
{
    // continue removing elements from stack
}

if(isfup == false)
    push(stack, ins);

我是这样做的:

while(pop(stack, &ins) && (ins->state == FUP || (push(stack, ins) && false)));
// while( A && ( B || ( C && false ) ) );

我的问题是,我应该停止编写这种风格的代码并保持清晰吗?还是我应该保留它?

【问题讨论】:

    标签: c++ loops optimization coding-style


    【解决方案1】:

    使用长而清晰的方式将其放入函数中,然后在需要调用该函数时在一行中快速调用该函数。毕竟,这就是过程编程中函数的用途之一! :-)

    【讨论】:

      【解决方案2】:

      如果堆栈最初为空或变为空,您的元代码将会崩溃。 同样作为风格问题,检查顶部元素,然后弹出或继续

      while(!stackEmpry(stack) && (top(stack)->state==FUP)) { pop(stack); }
      

      【讨论】:

        【解决方案3】:

        任何非一次性程序都会被您或其他人阅读多于写入数倍。这种编码风格需要更长的时间来编写,甚至更长的时间来阅读,运行速度不会更快且容易出错。你想完成什么?

        在过去人们在纸上打印代码的美好时光里,你可能有一个借口,但在这个时代,视网膜显示器无处不在......

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-12
          • 2020-04-09
          • 2014-12-30
          • 1970-01-01
          • 1970-01-01
          • 2018-04-12
          相关资源
          最近更新 更多