我想找到两个变量的绝对值中的最大值,并返回该变量的实际值,而不是该变量的绝对值。
例如:
int x = 3;
int y = -5;
int z = max(abs(x), abs(y))
只会将 z
设置为 5
,而我希望它返回 -5
。是否有 C++ 函数来执行此操作?
最佳答案
如果您使用的是 C++11,您可以使用 STL 的 vector
int、max_element
和 lambda Compare
std::vector<int> values = {3, -5};
int largest_abs = *std::max_element(values.begin(), values.end(), [](const int& a, const int& b)
{
return abs(a) < abs(b);
});
返回 values
开始和结束之间的迭代器,其绝对值最大。 (这是通过比较器找到的) *
然后用于将迭代器(由 std::max_element
返回)转换为 int
关于c++ - 返回变量绝对值最大值的实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27113404/