C++ std::transform

一 std::transfrom

定义于头文件 <algorithm>

template< class InputIt, class OutputIt, class UnaryOperation >
OutputIt transform( InputIt first1, InputIt last1, OutputIt d_first,
                    UnaryOperation unary_op ); (C++20 前)
template< class InputIt, class OutputIt, class UnaryOperation >
constexpr OutputIt transform( InputIt first1, InputIt last1, OutputIt d_first,
                              UnaryOperation unary_op ); (C++20 起)
template< class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class UnaryOperation >
ForwardIt2 transform( ExecutionPolicy&& policy, ForwardIt1 first1, ForwardIt1 last1,
                    ForwardIt2 d_first, UnaryOperation unary_op ); (C++17 起)
template< class InputIt1, class InputIt2, class OutputIt, class BinaryOperation >
OutputIt transform( InputIt1 first1, InputIt1 last1, InputIt2 first2, 
                    OutputIt d_first, BinaryOperation binary_op ); (C++20 前)
template< class InputIt1, class InputIt2, class OutputIt, class BinaryOperation >
constexpr OutputIt transform( InputIt1 first1, InputIt1 last1, InputIt2 first2, 
                              OutputIt d_first, BinaryOperation binary_op ); (C++20 起)
template< class ExecutionPolicy, class ForwardIt1, class ForwardIt2, 
class ForwardIt3, class BinaryOperation >
ForwardIt3 transform( ExecutionPolicy&& policy, ForwardIt1 first1, ForwardIt1 last1,
                    ForwardIt2 first2, ForwardIt3 d_first, BinaryOperation binary_op );
 (C++17 起)

std::transform 应用给定的函数到范围并存储结果于始于 d_first 的另一范围

二 例子

#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <iterator>
#include <functional>

std::map<int, int> mp{
  {1, 11},
  {2, 22},
  {3, 33},
  {4, 44}
};

int main() {
  std::vector<int> vc;
  std::transform(mp.begin(), mp.end(), std::back_inserter(vc),
                 std::bind(&std::map<int, int>::value_type::second, std::placeholders::_1));

  for (auto i : vc) {
    std::cout << i << std::endl; // output: 11 22 33 44
  }

  std::cin.get();
  return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值