【C++常用函数】取绝对值abs()

这篇博客介绍了C++中用于计算整数和浮点数绝对值的函数abs()和fabs()。示例代码展示了如何在程序中应用这两个函数,输入-4和-2.5后,输出结果为4和2.5。通过这个例子,读者可以了解这两个函数的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • abs()函数和fabs()函数
    头文件为cmath,分别用于整数和浮点数的取绝对值
#include <iostream>//输入输出
#include <cmath>
using namespace std;

const int N = 100010;

void main() {
	int a;
	float b;
	cin >> a >> b;
	a = abs(a);
	b = fabs(b);
	cout << a << endl << b << endl;
}

举个栗子:
input:-4 -2.5
output:4 2.5

### C++ 中使用 `std::sort` 对容器按元素绝对值排序 为了按照元素的绝对值对容器进行排序,可以定义一个自定义比较函数或者使用 lambda 表达式来实现这一功能。下面展示两种方法。 #### 方法一:使用普通函数作为比较器 通过编写一个返回布尔值的函数来进行两个整数绝对值之间的比较: ```cpp #include <algorithm> // 包含 std::sort 和 abs #include <vector> #include <iostream> // 定义自定义比较函数 bool compareByAbsoluteValue(int a, int b) { return abs(a) < abs(b); } int main() { std::vector<int> vec = {-3, 1, -4, 1, 5, -9}; // 调用 std::sort 并传入自定义比较函数 std::sort(vec.begin(), vec.end(), compareByAbsoluteValue); // 打印排序后的结果 for (int num : vec) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 此代码片段展示了如何创建并应用一个名为 `compareByAbsoluteValue` 的函数[^1]。 #### 方法二:使用 Lambda 表达式简化比较逻辑 Lambda 表达式的引入使得我们可以更简洁地表达相同的逻辑而无需显式声明额外的命名函数: ```cpp #include <algorithm> // 包含 std::sort 和 abs #include <vector> #include <iostream> int main() { std::vector<int> vec = {-3, 1, -4, 1, 5, -9}; // 使用 lambda 表达式代替传统函数 std::sort(vec.begin(), vec.end(), [](int a, int b) -> bool { return abs(a) < abs(b); }); // 输出排序后的序列 for (int num : vec) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 这段程序同样实现了基于绝对值升序排列的功能,但是采用了更加紧凑的方式表示比较条件。 无论是采用常规函数还是匿名lambda形式,在调用 `std::sort` 时都需要提供三个参数——起始迭代器、结束迭代器以及用来决定顺序关系的谓词(即上述例子中的第三个参数)。当涉及到复杂的数据结构或特定需求下的排序操作时,灵活运用这些特性能够极大地方便开发工作[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂java杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值