読者です 読者をやめる 読者になる 読者になる

std::transform を調べた

std::transform は 範囲内の要素に関数を適用してくれる機能です

4引数バージョン

// 小文字 -> 大文字
#include <string>
#include <algorithm>
#include <iostream>
int main()
{
    std::string s("hello");
    std::transform(s.begin(), s.end(),s.begin(),toupper);
    std::cout << s;
}
HELLO

5引数バージョン

#include <algorithm>    // std::transform
#include <iostream>     // std::cout
#include <vector>       // std::vector
int main()
{
    std::vector<int> prices = {100,200,150}; // 値段
    std::vector<int> quantity = {5,3,2};     // 個数
    std::vector<int> amount(prices.size());  // 個別の合計
    // prices * quantity -> amount
    std::transform(prices.begin(),prices.end(),quantity.begin(),amount.begin(),
                   [](int p,int q){return p*q;});
    // amountの合計を計算
    int total = std::accumulate(amount.begin(),amount.end(),0,[](int sum,int val){
        return sum+val;
    });
    std::cout << total;
}
1400