2015年5月22日金曜日

transform(C++)

transformは変換を行うライブラリである。transformの処理内容は、関数オブジェクトやラムダ式を使って記述する。

//
// transform.cpp
// CplusplusPractice
//
// Created by masai on 2015/05/22.
// Copyright (c) 2015年 masai. All rights reserved.
//
#include <iostream>
#include <vector>
using namespace std;
// 関数オブジェクトで記述するため構造体
struct FunctionObject{
int operator()(int value){
return value * 2;
}
};
int main(int argc, char* argv[]){
vector<int> v(3);
fill(v.begin(), v.end(), 1);
for(int i : v){
cout << i << endl;
}
// 関数オブジェクトで変換を記述
transform(v.begin(), v.end(), v.begin(), FunctionObject());
for(int i : v){
cout << i << endl;
}
// ラムダ式で変換を記述 []の中は処理する値を参照で受け取るかどうかを記述する。空の場合は値渡し、&で参照渡しとなる。今回はプリミティブ型なので空でも処理はうまくいく。
transform(v.begin(), v.end(), v.begin(), [&](int x) { return x * 10; });
for(int i : v){
cout << i << endl;
}
// 別のベクトルに入れる場合
vector<int> v2(v.size());
transform(v.begin(), v.end(), v2.begin(), [&](int x) { return x * 100; });
for(int i : v2){
cout << i << endl;
}
}
view raw transform.cpp hosted with ❤ by GitHub

0 件のコメント:

コメントを投稿