推荐答案
// www.javascriptcn.com code example
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::vector<int> result(vec.size());
// 使用 transform 将每个元素加 1
std::transform(vec.begin(), vec.end(), result.begin(), [](int x) {
return x + 1;
});
// 输出结果
for (int x : result) {
std::cout << x << " ";
}
return 0;
}本题详细解读
1. std::transform 函数的作用
std::transform 是 C++ 标准库中的一个算法函数,用于对容器中的元素进行变换操作。它可以将一个范围内的元素通过指定的操作函数进行转换,并将结果存储到另一个容器中。
2. 函数原型
template< class InputIt, class OutputIt, class UnaryOperation > OutputIt transform( InputIt first1, InputIt last1, OutputIt d_first, UnaryOperation unary_op );
first1和last1:输入范围的起始和结束迭代器。d_first:输出范围的起始迭代器。unary_op:一元操作函数,用于对输入范围内的每个元素进行变换。
3. 示例代码解析
- 我们定义了一个
std::vector<int>类型的容器vec,并初始化了一些整数。 - 创建了一个与
vec大小相同的result容器,用于存储变换后的结果。 - 使用
std::transform函数对vec中的每个元素进行加 1 操作,并将结果存储到result中。 - 最后,遍历
result并输出变换后的结果。
4. 注意事项
std::transform不会改变原始容器中的元素,而是将变换后的结果存储到指定的输出容器中。- 输出容器的大小必须足够大,以容纳变换后的结果,否则会导致未定义行为。
unary_op可以是一个函数指针、函数对象或 lambda 表达式。