无法减少代码(将cout与退出组合)

时间:2014-12-05 19:02:18

标签: c++ c linux exit cout

我允许在我的程序中只插入10行(严格)代码。我已经优化了编程到简洁的程序。我已经发布了以下代码。

    if (std::find(outvar.begin(), outvar.end(), line[x].tokens[0]) == outvar.end() ||             (std::find(inputs.begin(), inputs.end(), line[x].tokens[4]) == inputs.end())
 {
 cerr << "Undefined variable " << endl;  
 exit(1);
 }


if (opr[x].type == "MUL" && opr[x1].asap_value == my_cycle + 1)
{
opr[x1].asap_value = my_cycle + 2; 
update_slack();
update_matrix(opr[x1].opid, 0);
}


if (latency < (opr[p2].asap_value + opr[p2].latency_op - 1) || opr[p2].asap_value == 0) 
{
cerr << "Latency value is too less for this circuit \n"; return -1;
}

仅此一行需要10行,我还需要添加2行必修代码。我无法进一步减少它。基本上我希望将err(cout)语句和exit(return)语句组合成一个语句。

非常感谢任何帮助。

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用逗号将其全部变为一行:

opr[x1].asap_value = my_cycle + 2, update_slack(), update_matrix(opr[x1].opid, 0);

不确定这是否被视为作弊。您还没有明确说明规则是什么。

答案 1 :(得分:0)

您需要了解语句数量和代码效率之间没有明显的关系。这是因为,例如语句cout<<x;不是处理器的单个指令。处理器必须执行数百甚至数千条指令才能实现该语句的目标。此外,还有一些语句,如a = b + c;,它们被翻译成2-3条指令。

因此,通过减少语句数量,您无法优化代码。还有其他优化方法,例如使用更有效的算法。