transform ÇÔ¼ö´Â ¹Ýº¹ÀÚ ±¸°£¿¡ ´ëÇØ ÇÔ¼ö °´Ã¼¸¦ Àû¿ëÇÑ ÈÄ ±× °á°ú¸¦ ´Ù¸¥ ±¸°£¿¡ º¹»çÇÑ´Ù. ´ÜÇ× ÇÔ¼ö¸¦ ÃëÇÏ´Â ¹öÀü°ú ÀÌÇ× ÇÔ¼ö¸¦ ÃëÇÏ´Â ¹öÀü µÎ °¡Áö°¡ ÀÖ´Ù.
OutIt transform(InIt first, InIt last, OutIt result, UniOp op);
OutIt transform(InIt1 first1, InIt1 last1, InIt2 first2, OutIt result, BinOp op);
´ÜÇ× ÇÔ¼ö¸¦ ÃëÇÏ´Â ¹öÀüÀº ¹Ýº¹ÀÚ ±¸°£ÀÇ °¢ ¿ä¼Ò¸¦ ÀÌ ÇÔ¼ö·Î ³Ñ°Ü ¸®ÅÏµÈ °ªÀ» result ¹Ýº¹ÀÚ À§Ä¡¿¡ ´ëÀÔÇÑ´Ù. ÀÌÇ× ÇÔ¼ö¸¦ ÃëÇÏ´Â ¹öÀüÀº µÎ ¹Ýº¹ÀÚ ±¸°£ÀÇ ´ëÀÀµÇ´Â °ªÀ» ÇÔ¼ö·Î ³Ñ°Ü ¸®ÅϵǴ °ªÀ» result ¹Ýº¹ÀÚ À§Ä¡¿¡ ´ëÀÔÇÑ´Ù. ÇÑ ±¸°£¿¡ ´ëÇÑ ´Ü¼ø º¯È¯À» ÇÒ °ÍÀÎÁö ¾Æ´Ï¸é µÎ ±¸°£À» ÇÕÃļ º¯È¯À» ÇÒ °ÍÀÎÁö¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â ó¸®ÇÑ °á°ú¸¦ Ç×»ó result·Î Ãâ·ÂÇϹǷΠ¿øº»ÀÌ ±×´ë·Î À¯ÁöµÈ´Ù. ¹°·Ð result°¡ ¿øº»ÀÌ µÉ ¼öµµ ÀÖ´Ù.
¿¹ Á¦ : transform |
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template<typename C> void dump(const char *desc, C c) { cout.width(12);cout << left << desc << "==> ";
copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," ")); cout << endl; }
int multi2(int a)
{
return a*2;
}
int add(int a, int b)
{
return a+b;
}
void main()
{
vector<int> src(5), dest(5), sum;
int i;
for (i=0;i<5;i++) src[i]=i;
transform(src.begin(),src.end(),dest.begin(),multi2);
dump("src",src);
dump("dest",dest);
transform(src.begin(),src.end(),dest.begin(),back_inserter(sum),add);
dump("sum",sum);
}
src º¤ÅÍ¿¡ 0 ~ 4±îÁöÀÇ Á¤¼ö¸¦ ÀúÀåÇÑ »óÅ¿¡¼ Àüü ±¸°£¿¡ ´ëÇØ ´ÜÇ× multi2 ÇÔ¼ö °´Ã¼¸¦ Àû¿ëÇß´Ù. multi2 ÇÔ¼ö °´Ã¼´Â 0, 1, 2 °¢°¢À» ¹Þ¾Æ 0, 2, 4¸¦ ¸¸µé¾î ¸®ÅÏÇϸç transformÀº ±× °á°ú¸¦ destÀÇ ¹Ýº¹ÀÚ¿¡ ´ëÀÔÇÑ´Ù. dest¿¡´Â srcÀÇ 2¹èµÇ´Â °ªµéÀÌ ÀúÀåµÉ °ÍÀÌ´Ù.
´ÙÀ½À¸·Î ÀÌÇ× °´Ã¼¸¦ ÃëÇÏ´Â transform ÇÔ¼ö¸¦ È£ÃâÇÏ¿© src¿Í destÀÇ ´ëÀÀµÇ´Â ¿ä¼Ò¸¦ add ÇÔ¼ö °´Ã¼·Î ³Ñ°å´Ù. ÀÌ ÇÔ¼ö´Â Àμö·Î Àü´Þ¹ÞÀº µÎ °ªÀ» ´õÇÏ¿© ¸®ÅÏÇÏ¸ç ±× °á°ú´Â sum º¤ÅÍ¿¡ »ðÀԵȴÙ. »ðÀÔ ¹Ýº¹ÀÚ¸¦ »ç¿ëÇßÀ¸¹Ç·Î add°¡ ¸®ÅÏÇÑ °ªÀÌ sum º¤ÅÍ¿¡ »ðÀ﵃ °ÍÀÌ´Ù.
src ==> 0 1 2 3 4
dest ==> 0 2 4 6 8
sum ==> 0 3 6 9 12
transform ÇÔ¼ö·Î º¤Åͳ¢¸® ¿¬»êÇߴµ¥ ù ¹øÂ° È£ÃâÀº dest=src*2¶ó°í ÇÒ ¼ö ÀÖ°í µÎ ¹øÂ° È£ÃâÀº sum=src+dest¶ó°í ÇÒ ¼ö ÀÖ´Ù. ¹°·Ð ÀÓÀÇÀÇ ÄÁÅ×À̳ʳ¢¸® Á¶ÇÕÇÏ¿© º¯È¯À» ÇÒ ¼öµµ ÀÖ´Ù.