42-1-´Ù.for_each

for_each ÇÔ¼ö´Â ÁöÁ¤ ±¸°£À» ¹Ýº¹Çϸ鼭 ÁöÁ¤ÇÑ ÀÛ¾÷À» ¼öÇàÇÑ´Ù.

 

UniOp for_each(InIt first, InIt last, UniOp op);

 

first~last »çÀÌÀÇ ±¸°£À» ¼øÈ¸Çϸ鼭 op ÇÔ¼ö °´Ã¼¸¦ È£ÃâÇÑ´Ù. ¸®ÅϰªÀº ÇÔ¼ö °´Ã¼Àε¥ º¸Åë ¹«½ÃÇÑ´Ù. for_each´Â ·çÇÁ¸¦ µ¹¸®´Â ¿ªÇÒ¹Û¿¡ ÇÏÁö ¾ÊÀ¸¹Ç·Î ±¸Ã¼ÀûÀÎ µ¿ÀÛÀ» ÇÏ´Â ÇÔ¼ö °´Ã¼°¡ ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. op´Â ¼øÈ¸ÁßÀÇ ¹Ýº¹ÀÚ°¡ °¡¸®Å°´Â ¿ä¼Ò°ª Çϳª¸¦ Àü´Þ¹Þ´Â ´ÜÇ× ÇÔ¼ö °´Ã¼À̸ç Àü´Þ¹ÞÀº °ª¿¡ ´ëÇØ ¹«½¼ ÁþÀ̵çÁö ÇÒ ¼ö ÀÖÀ¸¹Ç·Î »ç½Ç °¡Àå ÀϹÝÈ­µÈ ¾Ë°í¸®ÁòÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù.

¼øÈ¸Çϸ鼭 ƯÁ¤ ÀÛ¾÷À» ÇÏ°í ½Í´Ù¸é Á÷Á¢ ·çÇÁ¸¦ µ¹¸®Áö ¸»°í ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é µÈ´Ù. for_each´Â ·çÇÁ¸¦ ¾Ë°í¸®Áò ¾ÈÀ¸·Î ¼û±â´Â ¿ªÇÒÀ» Çϴµ¥ Á¦¾î º¯¼ö¸¦ ¼±¾ðÇϰí Ãʱâ½Ä, Á¶°Ç½ÄÀ» ÁöÁ¤ÇÏ´Â ¹ø°Å·Î¿î ÀÛ¾÷À» ´ë½ÅÇÑ´Ù°í »ý°¢ÇÏ¸é µÈ´Ù. ¼øÈ¸Áß¿¡ ¿ä¼Ò°ªÀ» Ãâ·ÂÇÒ ¼öµµ ÀÖ°í °Ë»öÇÒ ¼öµµ ÀÖ°í Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ¿ä¼ÒÀÇ °³¼ö¸¦ Á¶»çÇÒ ¼öµµ ÀÖ´Ù. find, find_if, count µîµî ¼øÈ¸Çϸ鼭 ¾î¶² ÀÏÀ» ÇÏ´Â ´ëºÎºÐÀÇ ¾Ë°í¸®ÁòÀ» ÀÌ ÇÔ¼ö·Î ±¸ÇöÇÒ ¼ö ÀÖ´Â ¼ÀÀÌ´Ù.

for_each´Â ºÐ·ù»ó ÀÐ±â ¾Ë°í¸®Áò¿¡ ¼ÓÇϴµ¥ ´Ù¸¥ ÀÐ±â ¾Ë°í¸®Áò°ú´Â ´Þ¸® ¿ä¼Ò¸¦ º¯°æÇÒ ¼öµµ ÀÖ´Ù. ¼øÈ¸Áß¿¡ ¿ä¼Ò°ªÀ» ¹Ù²Û´Ù°Å³ª ¿ä¼Ò°¡ °¡¸®Å°´Â ´ë»óü¸¦ »èÁ¦ÇÒ ¼öµµ ÀÖ´Ù. ±×·¡¼­ Æ÷ÀÎÅÍÀÇ ÄÁÅ×À̳ʿ¡¼­ ¿ä¼ÒÀÇ ¸Þ¸ð¸®¸¦ Á¤¸®ÇÒ ¶§ ÈçÈ÷ »ç¿ëµÈ´Ù. ±×·¯³ª ¿ä¼ÒÀÇ ³»¿ë¹°¸¸ °Çµå¸± ¼ö ÀÖÀ» »Ó ÄÁÅ×ÀÌ³Ê ÀÚü¸¦ º¯°æÇÏÁö´Â ¸øÇϹǷΠ¿©ÀüÈ÷ ÀÐ±â ¾Ë°í¸®ÁòÀÌ´Ù.

 

¿¹ Á¦ : for_each

#include <iostream>

#include <string>

#include <vector>

#include <algorithm>

using namespace std;

 

void func(string str)

{

     cout << str << endl;

}

 

void main()

{

     vector<string> vs;

     vs.push_back("·Îº¸Æ® Å层 ºêÀÌ");

     vs.push_back("µéÀå¹Ì ¼Ò³à ĵµð");

     vs.push_back("¹Ùº¸ ¿Â´Þ°ú Æò°­ °øÁÖ");

     vs.push_back("µ¶¼ö¸® ¿ÀÇüÁ¦");

 

     for_each(vs.begin(),vs.end(),func);

}

 

¹®ÀÚ¿­µéÀÌ ÀúÀåµÇ¾î ÀÖ´Â º¤Å͸¦ óÀ½ºÎÅÍ ³¡±îÁö ¼øÈ¸Çϸ鼭 È­¸éÀ¸·Î Ãâ·ÂÇØ º¸¾Ò´Ù. for_eachÀÇ ¼¼ ¹øÂ° Àμö func·Î ¹Ýº¹ÀÚ ±¸°£ÀÇ °¢ ¿ä¼Ò°¡ ¼ø¼­´ë·Î Àü´ÞµÇ¸ç func´Â ÀÌ °ªÀ» ¹Þ¾Æ È­¸éÀ¸·Î Ãâ·ÂÇß´Ù.

»ç½Ç ¿ä¼Ò°ªÀ» Ãâ·ÂÇϱâ À§ÇØ ²À for_each¸¦ »ç¿ëÇØ¾ßÇϸ¸ ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. Ãâ·Â ½ºÆ®¸² ¹Ýº¹ÀÚ¿Í copy ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¸é ´Ü ÇÑ ÁÙ·Î º¤ÅÍÀÇ ¸ðµç ¿ä¼Ò¸¦ È­¸éÀ¸·Î Ãâ·ÂÇÒ ¼ö ÀÖ´Ù. for_each´Â ÃÖ°íÀÇ ÀϹݼºÀ» Á¦°øÇϱâ´Â ÇÏÁö¸¸ for_each·Î ÇÒ ¼ö ÀÖ´Â ÀÛ¾÷ÀÇ ´ëºÎºÐÀº ÀÌ¹Ì ´õ Æí¸®ÇÑ ¾Ë°í¸®ÁòÀ¸·Î Á¦°øµÇ¹Ç·Î °¡±ÞÀûÀÌ¸é ¿ëµµ¿¡ ¸Â´Â ¾Ë°í¸®ÁòÀ» °ñ¶ó »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù.

for_each°¡ Ư¼öÈ­µÈ ´Ù¸¥ ¾Ë°í¸®Áò°ú ´Ù¸¥ Á¡À̶ó¸é ÀÏ´Ü ¼øÈ¸¸¦ ½ÃÀÛÇÏ¸é ¸ØÃâ ¹æ¹ýÀÌ ¾ø´Ù´Â °ÍÀÌ´Ù. Àüü ±¸°£À» ÇѹÙÄû¸¦ ´Ù µ¹¾Æ¾ß ³¡ÀÌ ³ª¸ç ¸ðµç ¿ä¼Ò¸¦ ¹«Á¶°Ç ÇÑ ¹ø¾¿ ¹æ¹®ÇØ¾ß ÇÑ´Ù. ±×·¡¼­ for_each·Î °Ë»öÀ» ±¸ÇöÇÏ´Â °ÍÀº Àû´çÇÏÁö ¾ÊÀºµ¥ °Ë»öÀ̶õ ¿øÇÏ´Â °É ã¾ÒÀ¸¸é Áï½Ã Áß´ÜÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù. ¹°·Ð ÀüºÎ ´Ù »öÃâÇϱâ ÀÛ¾÷À» ÇÑ´Ù¸é for_each°¡ ´õ ¾î¿ï¸± ¼öµµ ÀÖ´Ù.