c++ - 返回变量绝对值最大值的实际值

标签 c++

我想找到两个变量的绝对值中的最大值,并返回该变量的实际值,而不是该变量的绝对值。

例如:

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/

相关文章:

c++ - 避免拒绝服务攻击

c++ - 消除访客模式冗余的方法?

c# - 从使用由 C++ MFC 应用程序调用的异步的 C# COM 组件显示模态窗口

c++ - 每线程单例使用 thread_local 存储

c++ - 展开新对象并将其添加到函数内的数组

c++ - arm-linux-androideabi-gcc : get unrecognized command line option when passing -mmacosx-version-min argument

android - 错误: undefined reference to 'oboe::AudioStreamBuilder::openStream(oboe::AudioStream**)'

c++ - 是否建议将字符串 std::move 到将被覆盖的容器中?

c++ - C/C++ 中有什么方法可以检测代码是否在静态初始化期间运行?

c++ - 二维数组分配