|
> transform
> 高速化するかどうかは知らない(処理に必要最小限の時間は絶対になくならない)
御意。楽になるだろけど、速くなるかは別問題。少なくとも時間計算量はO(N)のまま。
#include <iostream>
#include <utility>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
typedef std::pair<int,int> point;
int main() {
vector<point> src;
src.push_back(point(0,1));
src.push_back(point(2,3));
src.push_back(point(4,5));
src.push_back(point(6,7));
int xbias = 10;
int ybias = 20;
vector<point> dst;
// xbias, ybias を加えた point を dstに。
transform(src.begin(), src.end(), back_inserter(dst),
[=](const point& p) { return point(p.first+xbias, p.second+ybias); });
for_each(dst.begin(), dst.end(),
[](const point& p) { cout << '(' << p.first << ',' << p.second << ')' << endl;});
}
|