`stdtransform` 的一元运算是如何与lambda表达式结合使用的?
时间: 2024-09-29 14:15:45 浏览: 26
`std::transform` 是 C++ 标准库 `<algorithm>` 中的一个函数模板,它用于对一组数据进行某种转换操作,通常配合算法迭代器一起使用。当需要对数据集进行一元运算(如加法、乘法等简单变换)时,可以使用 lambda 表达式作为转换操作。
例如,如果你有一个整数向量,你想将每个元素平方,你可以这样做:
```cpp
#include <vector>
#include <algorithm>
std::vector<int> numbers = {1, 2, 3, 4, 5};
// 使用 std::transform 和 lambda 表达式
std::transform(numbers.begin(), numbers.end(), numbers.begin(), [](int x) { return x * x; });
// 现在numbers向量的内容应该是{1, 4, 9, 16, 25}
```
在这个例子中,`[](int x) -> int { return x * x;}` 是一个 lambda 表达式,它接受一个整数参数 `x`,并返回它的平方值。`std::transform` 第二个和第三个参数都是输入和输出迭代器,它们告诉算法从哪里开始读取原始数据,并将结果写入到同一个容器的位置。
阅读全文