您可以使用标准算法的std ::最大的是具有作为参数std::initializer_list
例如
#include <algorithm>
//...
largestDeviation = std::max(
{
angleBetweenVectors(robustNormal, normalAtA),
angleBetweenVectors(robustNormal, normalAtB),
angleBetweenVectors(robustNormal, normalAtC),
angleBetweenVectors(robustNormal, normalAtD),
angleBetweenVectors(robustNormal, normalAtE)
});
至于你的代码,然后它确定由函数angleBetweenVectors的相应调用返回的值中的最大值。该代码使用标准算法std::max
,该算法具有两个参数并确定两个参数之间的最大值。
举例内呼叫
max(angleBetweenVectors(robustNormal, normalAtA),
angleBetweenVectors(robustNormal, normalAtB)),
发现由该函数调用返回的两个值之间的最大值。函数std::max
的结果与下一个调用一起使用,如果该函数依次在封闭的std::max
调用中使用。
通过您的代码编译错误的方式应该是std::max
一个多个呼叫
largestDeviation =
max(
max(
max(
max(angleBetweenVectors(robustNormal, normalAtA),
angleBetweenVectors(robustNormal, normalAtB)
),
angleBetweenVectors(robustNormal, normalAtC)
),
angleBetweenVectors(robustNormal, normalAtD)
),
angleBetweenVectors(robustNormal, normalAtE)
);
我会通过使一个'的std ::矢量简化它',使用'的push_back()'添加你漂浮在矢量上,然后调用'std :: max'找到最大的。它可能不是非常快,但它是可读的。 –
Steve