【问题标题】:Function calling from STL max function [duplicate]从STL max函数调用函数[重复]
【发布时间】:2021-12-14 10:11:09
【问题描述】:

我在 C++ STL max 函数中有两个函数调用。首先调用哪个函数?第一个还是第二个?

 max(rec(a,a[lev+1],lev+1,n,ar),rec(a,(a[lev]+a[lev+2])/2,lev+1,n,ar));
        

【问题讨论】:

  • 这是定义的实现,IIRC。
  • 你能详细说明你的答案吗?
  • 实现定义是什么意思。
  • “实现”是编译器,它可以在评估函数参数时做任何事情。它甚至可能没有特定的固定和设置顺序,对于某些调用,它可以按一种顺序执行,而对于另一些调用,则可以完全不同的顺序。
  • @Someprogrammerdude:“实现定义”确实意味着它必须在文档中,因此记录不同的顺序会相当棘手。但从 C++17 开始,它实际上是不确定排序的。它不需要记录在案。

标签: c++ function stl


【解决方案1】:

唯一的要求是有一个顺序。一旦编译器开始计算一个参数,它必须在开始计算另一个参数之前完成。

但是编译器中的优化器可能会根据具体情况选择它认为最好的方法,因此您无法预先预测编译器会做出什么选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2021-12-05
    • 2012-06-11
    相关资源
    最近更新 更多