您可以使用標準算法的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