std::transform
时间: 2023-09-15 14:19:07 浏览: 45
`std::transform` 是 C++ STL 中的一个算法,它可以将一个序列中的每个元素进行转换,并将转换后的结果放入另一个序列中。它的函数原型如下:
```cpp
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` 是一个一元函数对象,它接受输入序列中的每个元素作为参数,并返回转换后的结果。
例如,下面的代码将一个 `vector<int>` 中的每个元素都加 1,并将结果存储到另一个 `vector<int>` 中:
```cpp
std::vector<int> v1{1, 2, 3};
std::vector<int> v2(v1.size());
std::transform(v1.begin(), v1.end(), v2.begin(), [](int x) { return x + 1; });
```
此时,`v2` 中的元素为 `{2, 3, 4}`。
相关问题
c++ std::transform
`std::transform`是C++标准库中的一个算法函数,用于将一个序列转换为另一个序列。它通常与迭代器一起使用,可以对一个序列中的每个元素应用一个函数,然后将结果存储到另一个序列中。
`std::transform`的函数原型如下:
```c++
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`是一个一元函数,指定了对每个元素进行的操作。
举个例子,下面的代码将一个int型的vector中的每个元素加1,然后存储到另一个vector中:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> v{1, 2, 3, 4, 5};
std::vector<int> result(v.size());
std::transform(v.begin(), v.end(), result.begin(),
[](int i){ return i + 1; });
for (auto i : result) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
```
输出为:
```
2 3 4 5 6
```
std::transform()
std::transform()是一个功能强大的算法函数,用于对容器中的元素进行变换操作。它可以在指定的范围内应用给定的操作,并将结果存储在另一个指定的范围内。
std::transform()有两个重载方法,一个是对应于一元操作,一个是对应于二元操作。一元操作是指只需要一个输入参数的操作函数,而二元操作是指需要两个输入参数的操作函数。通过传递操作函数到std::transform()中,我们可以避免手动编写循环,并且可以方便地在不同的容器之间进行元素转换。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [C++ std::transform使用方法与代码演示](https://blog.csdn.net/yao_hou/article/details/123222353)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [C++的std::transform()](https://blog.csdn.net/weixin_62264287/article/details/131647063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)