STL ¶óÀ̺귯¸®´Â °´Ã¼ ÁöÇâ ±â¹ýÀÇ ÀϺΠ±â´É¸¸ »ç¿ëÇÑ´Ù. »ó¼ÓÀº °ÅÀÇ »ç¿ëÇÏÁö ¾ÊÀ¸¸ç ´ÙÇü¼ºÀº ´À¸®´Ù´Â ÀÌÀ¯·Î ¿ÏÀüÈ÷ ¹èÁ¦ÇÑ´Ù. ÄÁÅ×ÀÌ³Ê Å¬·¡½º´Â ³»ºÎÀûÀÎ °ü¸®¿¡ ¹Ýµå½Ã ÇÊ¿äÇÑ ±â´É¸¸À» °¡Áö¸ç ÇÊ¿äÇÑ ¸ðµç ±â´ÉÀ» ¿Ïº®ÇÏ°Ô Ä¸½¶È­ÇÏÁö ¾Ê´Â´Ù. ÄÁÅ×À̳ʵéÀº ¾Ë°í¸®ÁòÀ» Á¦°øÇÏ´Â Àü¿ª ÇÔ¼ö¿Í °áÇյǾî¾ß Á¦ ±â´ÉÀ» ¹ßÈÖÇÒ ¼ö ÀÖ´Ù.

STLÀÇ ÁÖ¿ä ¾Ë°í¸®ÁòµéÀº Àü¿ª ÇÔ¼ö·Î Á¦°øµÇ¸ç ÀÓÀÇÀÇ ÄÁÅ×À̳ʿ¡ ´ëÇØ ¶È°°Àº ¹æ¹ýÀ¸·Î Àû¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ STLÀ» ÀϹÝÀûÀ̶ó°í ÇÑ´Ù. À̶§ °¢ ¾Ë°í¸®Áò°ú ÄÁÅ×À̳ʸ¦ °áÇÕÇϱâ À§ÇÑ Á¢ÂøÁ¦·Î ¹Ýº¹ÀÚ°¡ »ç¿ëµÇ¸ç »óÀÌÇÑ ÄÁÅ×ÀÌ³Ê ±¸Á¶¿¡µµ ¾Ë°í¸®ÁòÀÌ Àß ½ÇÇàµÉ ¼ö ÀÖµµ·Ï ¿ÏÃæ ¿ªÇÒÀ» Çϱ⵵ ÇÑ´Ù. ÄÁÅ×À̳ʰ¡ Á¦°øÇÏ´Â ¹Ýº¹ÀÚ¿Í ¾Ë°í¸®ÁòÀÌ ¿ä±¸ÇÏ´Â ¹Ýº¹ÀÚ°¡ ´Ù¸¦ °æ¿ì È¿À²»óÀÇ ¹®Á¦·Î °¡²û °áÇÕÇÏÁö ¸øÇÏ´Â Á¶ÇÕµµ ÀÖ´Ù.

´ëºÎºÐÀÇ ¾Ë°í¸®Áò ÇÔ¼öµéÀº algorithm Çì´õ ÆÄÀÏ¿¡ ¿øÇüÀÌ ¼±¾ðµÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ Çì´õ¸¦ ¹Ýµå½Ã ÀÎŬ·çµåÇØ¾ß ÇÑ´Ù. ÇмúÀûÀ¸·Î STLÀ» ±íÀÌÀÖ°Ô ¿¬±¸ÇØ º¸°í ½Í´Ù¸é ÀÌ Çì´õ ÆÄÀÏÀ» ºÐ¼®ÇØ º¸´Â °ÍÀÌ ÁÁ´Ù. ¹°·Ð ¶óÀ̺귯¸®¶õ ¾îÂ÷ÇÇ ³²ÀÌ ¸¸µç °É °øÂ¥·Î ¾²ÀÚ´Â ÃëÁöÀ̹ǷΠ»ç¿ë¸¸À» ¸ñÀûÀ¸·Î ÇÑ´Ù¸é ±»ÀÌ ±×·² Çʿ䰡 ¾øÀ» °ÍÀÌ´Ù. ±×·¯³ª ¶§·Î´Â ÀåȲÇÑ ¼³¸íÀ̳ª ¿¹Á¦º¸´Ù ½ÇÁ¦ Äڵ尡 ´õ È®½ÇÇÑ ¼³¸íÀÌ µÉ ¼öµµ ÀÖÀ¸¹Ç·Î °¡²ûÀº Çì´õ ÆÄÀÏÀ» Á÷Á¢ µéÃç º¸´Â °ÍÀÌ ¾Ë°í¸®ÁòÀ» ÀÌÇØÇÏ´Â Áö¸§±æÀÌ µÉ ¼öµµ ÀÖ´Ù.

¾Ë°í¸®ÁòÀº ±â´É¿¡ µû¶ó Àбâ, º¯°æ, Á¤·Ä, ¼öÄ¡ 4°¡Áö·Î Å©°Ô ºÐ·ùµÇ´Âµ¥ À̸§À¸·ÎºÎÅÍ ´ëÃæÀÇ ±â´ÉÀ» À¯ÃßÇÒ ¼ö ÀÖ´Ù. ±â´Éº° ºÐ·ù¿Ü¿¡ ÄÁÅ×À̳ʸ¦ Á÷Á¢ º¯°æÇÏ´Â °Í°ú º¹»çº»À» »ý¼ºÇÏ´Â °ÍÀ¸·Î ºÐ·ùÇϱ⵵ Çϰí ÇÔ¼ö °´Ã¼¸¦ ÃëÇÏ´Â ¹öÀü°ú ±×·¸Áö ¾ÊÀº ¹öÀüÀ¸·Î ºÐ·ùÇϱ⵵ ÇÑ´Ù. ÀÌ Àå¿¡¼­´Â ±â´É ºÐ·ù¼øÀ¸·Î ¾Ë°í¸®ÁòÀ» Çϳª¾¿ ½Ç½ÀÇØ º¸µÇ STLÀÇ ±âº» ±¸Á¶¿Í öÇÐÀ» ÀÌÇØÇϰí ÀÖ´Ù¸é ´ëºÎºÐ ¾î·ÆÁö ¾ÊÀ¸¹Ç·Î °£´ÜÇÑ »ç¿ë¹ý°ú ¿¹Á¦ À§ÁÖÀÇ ·¹ÆÛ·±½º Çü½ÄÀ¸·Î Á¤¸®Çϱâ·Î ÇÑ´Ù. ¾çÀÌ ¸¹±â ¶§¹®¿¡ ¸ðµç ÇÔ¼öÀÇ »ç¿ë¹ýÀ» ¿ÏÀüÈ÷ ¼÷ÁöÇÏ´Â °ÍÀº ¾î·Á¿ì¹Ç·Î Á¦°øµÇ´Â ÇÔ¼öÀÇ ¸ñ·Ï¸¸ ÆÄ¾ÇÇØ µÎ¾ú´Ù°¡ ÇÊ¿äÇÒ ¶§ ÂüÁ¶ÇÏ´Â Çü½ÄÀ¸·Î Ȱ¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù.

42-1.ÀÐ±â ¾Ë°í¸®Áò

42-1-°¡.find

ÀÐ±â ¾Ë°í¸®ÁòÀº ÄÁÅ×À̳ʸ¦ º¯°æÇÏÁö´Â ¾ÊÀ¸¸ç ÄÁÅ×À̳ʷκÎÅÍ ¿øÇÏ´Â Á¤º¸¸¦ ±¸Çϱ⸸ ÇÏ´Â ¾Ë°í¸®ÁòÀÌ´Ù. find´Â °¡Àå ±âº»ÀûÀÎ ¾Ë°í¸®ÁòÀÎ °Ë»ö ±â´ÉÀ» Á¦°øÇϴµ¥ ÇÑÂü ¾Õ¿¡¼­ ÀÌ¹Ì ¼Ò°³Çß°í ÃæºÐÇÑ ½Ç½À±îÁö ÇØ º¸¾ÒÀ¸¹Ç·Î ÀÌ¹Ì Àͼ÷ÇÒ °ÍÀÌ´Ù.

 

InIt find(InIt first, InIt last, const T& val);

 

ÀÔ·Â ¹Ýº¹ÀÚ µÎ °³·Î °Ë»ö ´ë»ó ±¸°£À» ÁöÁ¤ÇÏ¿© °Ë»öÇϰíÀÚÇÏ´Â °ªÀ» ¼¼ ¹øÂ° Àμö·Î Àü´ÞÇÑ´Ù. first ~ last ±¸°£¿¡¼­ val °ªÀ» °¡Áö´Â ¿ä¼Ò°¡ ÀÖ´ÂÁö °Ë»öÇÏ¿© ±× ¹Ýº¹ÀÚ¸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à valÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é last°¡ ¸®ÅϵȴÙ.

 

¿¹ Á¦ : find

#include <iostream>

#include <string>

#include <vector>

#include <algorithm>

using namespace std;

 

void main()

{

     string names[]={"±èÁ¤¼ö","±¸È«³à","¹®º´´ë",

          "±è¿µÁÖ","ÀÓÀçÀÓ","¹Ú¹Ì¿µ","¹ÚÀ±ÀÚ"};

     vector<string> as(&names[0],&names[7]);

 

     vector<string>::iterator it;

     it=find(as.begin(),as.end(),"¾È¼øÀÚ");

     if (it==as.end()) {

          cout << "¾ø´Ù" << endl;

     } else {

          cout << "ÀÖ´Ù" << endl;

     }

}

 

¹®ÀÚ¿­ º¤ÅÍ¿¡¼­ ƯÁ¤ÇÑ ¹®ÀÚ¿­ÀÌ ÀÖ´ÂÁö °Ë»öÇØ º¸¾Ò´Ù. ¿¹Á¦¿¡¼­´Â »·È÷ ¾ø´Â ¹®ÀÚ¿­¿¡ ´ëÇØ °Ë»öÀ» Áö½ÃÇßÀ¸¹Ç·Î "¾ø´Ù"´Â °á°ú°¡ Ãâ·ÂµÉ °ÍÀÌ´Ù. find´Â ±¸°£À» ¼øÂ÷ °Ë»öÇÏ¸ç ¿ä¼Ò¸¦ ºñ±³ÇÒ ¶§´Â ¿ä¼Ò ŸÀÔÀÇ == ¿¬»êÀÚ·Î ºñ±³ÇÑ´Ù. µû¶ó¼­ °Ë»öÀ» À§ÇÑ Æ¯º°ÇÑ Á¶°ÇÀº ÇÊ¿ä¾øÁö¸¸ ÄÁÅ×À̳ʿ¡ ¿ä¼Ò°¡ ¸¹À¸¸é °Ë»ö ¼Óµµ´Â ´À·ÁÁø´Ù.

find´Â ÃÖÃÊ·Î Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ¿ä¼Ò Çϳª¸¸ °Ë»öÇϴµ¥ ¸¸¾à ±¸°£³»¿¡ ÀÏÄ¡ÇÏ´Â ¸ðµç ¿ä¼Ò¸¦ °Ë»öÇÏ°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ·çÇÁ¸¦ µ¹¸®¸é µÈ´Ù. ÃÖÃÊ ±¸°£ÀÇ Ã³À½¿¡ ¹Ýº¹ÀÚ¸¦ µÎ°í ÀÌ ¹Ýº¹ÀÚ ÀÌÈĸ¦ °Ë»öÇϸç Çϳª°¡ °Ë»öµÉ ¶§¸¶´Ù ´ÙÀ½ À§Ä¡·Î À̵¿ÇÑ ÈÄ ´õ ÀÌ»ó ¹ß°ßµÇÁö ¾ÊÀ» ¶§±îÁö °Ë»öÀ» ¹Ýº¹ÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¿¹Á¦ÀÇ °æ¿ì´Â Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ¿ä¼Ò°¡ Çϳª¹Û¿¡ ¾øÁö¸¸ ¿©·¯ °³ ÀÖ´Ù¸é ÀüºÎ °Ë»öµÉ °ÍÀÌ´Ù.

 

     vector<string>::iterator it;

     for (it=as.begin();;it++) {

          it=find(it,as.end(),"±èÁ¤¼ö");

          if (it==as.end()) break;

          cout << *it << "ÀÌ(°¡) ÀÖ´Ù." << endl;

     }

 

ÀÌ ¿Ü¿¡ ¸¶Áö¸· Àμö·Î Á¶°ÇÀÚ¸¦ ÃëÇÏ´Â find_if ÇÔ¼öµµ Àִµ¥ ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ¿ÏÀüÈ÷ ÀÏÄ¡ÇÏ´Â ¿ä¼Ò»Ó¸¸ ¾Æ´Ï¶ó ¿øÇÏ´Â Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ¿ä¼Ò¸¦ °Ë»öÇÒ ¼ö ÀÖ´Ù.

 

InIt find_if(InIt first, InIt last, UniPred F);

 

find´Â ¿ä¼Ò¸¦ ºñ±³ÇÒ ¶§ == ¿¬»êÀÚ¸¦ »ç¿ëÇÏÁö¸¸ find_if´Â »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ´ÜÇ× ÇÔ¼ö °´Ã¼ F·Î ºñ±³ÇÑ´Ù. ±¸°£³»ÀÇ ¸Å ¿ä¼Ò¿¡ ´ëÇØ F ÇÔ¼ö¸¦ È£ÃâÇÏ¿© true°¡ ¸®ÅϵǴ ¿ä¼Ò¸¦ °Ë»öÇϴµ¥ F°¡ ¾î¶² ½ÄÀ¸·Î ºñ±³¸¦ ¼öÇàÇϴ°¡¿¡ µû¶ó ´Ù¾çÇÑ ¹æ½ÄÀ¸·Î ¿ä¼Ò°ªÀ» Á¡°ËÇÒ ¼ö ÀÖ´Ù. ¿ÏÀüÈ÷ ÀÏÄ¡ÇÏ´Â °Í»Ó¸¸ ¾Æ´Ï¶ó ºÎºÐ ÀÏÄ¡³ª Æ÷ÇÔ ¿©ºÎ µîÀ¸·Îµµ °Ë»ö °¡´ÉÇÏ´Ù. ´ÙÀ½ ¿¹Á¦´Â À̸§¿¡ "¿µ"ÀÚ°¡ Æ÷ÇÔµÈ »ç¶÷µéÀ» °Ë»öÇÑ´Ù.

 

¿¹ Á¦ : find_if

#include <iostream>

#include <string>

#include <vector>

#include <algorithm>

using namespace std;

 

bool HasYoung(string who)

{

     return (who.find("¿µ") != string::npos);

}

 

void main()

{

     string names[]={"±èÁ¤¼ö","±¸È«³à","¹®º´´ë",

          "±è¿µÁÖ","ÀÓÀçÀÓ","¹Ú¹Ì¿µ","¹ÚÀ±ÀÚ"};

     vector<string> as(&names[0],&names[7]);

 

     vector<string>::iterator it;

     for (it=as.begin();;it++) {

          it=find_if(it,as.end(),HasYoung);

          if (it==as.end()) break;

          cout << *it << "ÀÌ(°¡) ÀÖ´Ù." << endl;

     }

}

 

HasYoung ÇÔ¼ö´Â ¹®ÀÚ¿­À» Àμö·Î Àü´Þ¹Þ¾Æ "¿µ"À̶ó´Â ºÎºÐ ¹®ÀÚ¿­ÀÌ Æ÷ÇԵǾî ÀÖ´ÂÁö °Ë»çÇÏ¿© ±× °á°ú¸¦ ¸®ÅÏÇϸç find_if´Â ÀÌ ÇÔ¼ö°¡ true¸¦ ¸®ÅÏÇÏ´Â ¿ä¼Ò¸¦ °Ë»öÇÑ´Ù. find°¡ ==·Î ¿ÏÀüÈ÷ °°Àº ¿ä¼Ò¸¸ ºñ±³Çϴµ¥ ºñÇØ find_if´Â Á¶°ÇÀ» Á÷Á¢ Á¡°ËÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÈξÀ ´õ ÀϹÝÈ­µÈ °Ë»öÀÌ °¡´ÉÇÏ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

±è¿µÁÖÀÌ(°¡) ÀÖ´Ù.

¹Ú¹Ì¿µÀÌ(°¡) ÀÖ´Ù.

 

ÇÔ¼ö Æ÷ÀÎÅÍ ´ë½Å () ¿¬»êÀÚ¸¦ Á¤ÀÇÇÏ´Â ÇÔ¼ö °´Ã¼¸¦ »ç¿ëÇÒ ¼öµµ Àִµ¥ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤Çصµ °á°ú´Â µ¿ÀÏÇÏ´Ù.

 

struct HasYoung {

     bool operator()   (string who) const {

          return (who.find("¿µ") != string::npos);

     }

};

 

it=find_if(it,as.end(),HasYoung());

 

ÀÌ ¹æ¹ý¿¡ ´ëÇØ¼­´Â ¾Õ Àå¿¡¼­ ÀÌ¹Ì ÃæºÐÈ÷ ¿¬±¸¸¦ ÇØ º¸¾Ò´Âµ¥ ÀÌÈÄ °¡±ÞÀûÀÌ¸é ¼Ò½º°¡ ªÀº ÂÊÀ¸·Î ¿¹Á¦¸¦ ÀÛ¼ºÇϱâ·Î ÇÑ´Ù. ´ÙÀ½ ÇÔ¼ö´Â ¹Ýº¹ÀÚ ±¸°£¿¡¼­ ÀÎÁ¢ÇÑ µÎ ¿ä¼Ò°¡ °°Àº °ªÀ» °¡Áö´Â À§Ä¡¸¦ °Ë»öÇÑ´Ù.

 

FwdIt adjacent_find(FwdIt first, FwdIt last [, BinPred F]);

 

ÇÔ¼öÀÇ ¿øÇüÀ» Ç¥±âÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­´Â ¾Õ Àå¿¡¼­µµ ¼³¸íÀ» ÇÑ ÀûÀÌ Àִµ¥ ·¹ÆÛ·±½º¸¸À» Àд »ç¶÷µéÀ» À§ÇØ ´Ù½Ã ÇÑ ¹ø ´õ ¹Ýº¹Çϱâ·Î ÇÑ´Ù. ÀÌ Ã¥¿¡¼­´Â ª°Ô Ç¥±âÇϱâ À§ÇØ Ãà¾àµÈ ¿øÇüÀ» »ç¿ëÇϴµ¥ ¹®¼­»óÀÇ Á¤È®ÇÑ ¿øÇüÀº À̺¸´Ù ÈξÀ ´õ º¹ÀâÇÏ°Ô ÀÛ¼ºµÇ¾î ÀÖ´Ù. ¾Ë°í¸®Áò ÇÔ¼öµéÀº ¿¹¿Ü¾øÀÌ ÅÛÇø´À¸·Î Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î ´ÙÀ½°ú °°ÀÌ ¿øÇüÀ» Ç¥±âÇÏ´Â °ÍÀÌ ¿ø·ÐÀûÀÌ´Ù.

 

template<class ForwardIterator>

ForwardIterator adjacent_find(

     ForwardIterator _First,

     ForwardIterator _Last

);

template<class ForwardIterator, class BinaryPredicate>

ForwardIterator adjacent_find(

     ForwardIterator _First,

     ForwardIterator _Last,

     BinaryPredicate _Comp

);

 

ÅÛÇø´ ÀμöÀÇ À̸§ÀÌ ³Ê¹« ¼³¸íÀûÀ¸·Î ÀÛ¼ºµÇ¾î ÀÖ¾î ¿øÇüÀÌ ±²ÀåÈ÷ ±æ´Ù. ¸Å¹ø ÀÌ·¸°Ô ÅÛÇø´ Á¤Àǹ®À» ÀÏÀÏÀÌ ¹àÈ÷´Â °ÍÀº ±ÍÂú°í ¿Ü¿ì±â¿¡µµ ³Ê¹« ±æ±â ¶§¹®¿¡ ¹Ýº¹ÀÚ¿Í ÇÔ¼ö °´Ã¼¿¡ ´ëÇØ¼­´Â InIt, RanIt, UniOp, BinPred µîÀÇ ÂªÀº ¾àÀÚ¸¦ »ç¿ëÇÏ¸ç ¹Ýº¹ÀÚ ±¸°£À» Ç¥½ÃÇÏ´Â Çü½Ä ÀμöÀÇ À̸§µµ first, last·Î ÅëÀÏÇÏ¿´´Ù. ÀÌ ¾àÀÚ¿¡ ´ëÇØ¼­´Â ¾Õ Àå¿¡¼­ ÀÌ¹Ì ¼³¸íÀ» ÇÑ ¹Ù ÀÖ´Ù.

¶ÇÇÑ Á¶°ÇÀÚ¸¦ ÃëÇÏ´Â ¹öÀü°ú ±×·¸Áö ¾ÊÀº ¹öÀüÀÌ Áߺ¹ Á¤ÀǵǾî ÀÖ¾î Á¶°ÇÀÚ´Â »ý·« °¡´ÉÇѵ¥ ÀÌ·± Àμö¿¡ ´ëÇØ¼­´Â [ ] °ýÈ£·Î »ý·« °¡´ÉÇÔÀ» Ç¥±âÇϱâ·Î ÇÑ´Ù. ÇÔ¼ö °´Ã¼´Â Æ÷ÀÎÅÍÀÇ NULLó·³ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù´Â ƯÀ̰ªÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¹Ç·Î µðÆúÆ® Àμö ±â´ÉÀ» »ç¿ëÇÒ ¼ö ¾ø¾î µÎ ¿øÇüÀ¸·Î µû·Î Á¤ÀÇÇÒ ¼ö¹Û¿¡ ¾ø´Ù. ÀÌÈÄÀÇ ¿øÈ°ÇÑ ÇнÀÀ» À§ÇØ Ç¥±â¹ý¿¡ ´ëÇØ ºÎ¿¬ ¼³¸íÀ» Çß´Ù.

Á¶°ÇÀÚ°¡ ¾ø´Â ÇÔ¼ö´Â ÀÎÁ¢ÇÑ µÎ ¿ä¼Ò¸¦ == ¿¬»êÀÚ·Î ºñ±³ÇϹǷΠµÎ ¿ä¼Ò°¡ °°Àº À§Ä¡¸¦ ã´Â´Ù. adjacent_find´Â ±¸°£À» ¼øÈ¸Çϸ鼭 ¾ÕµÚÀÇ ¿ä¼Ò°ªÀÌ °°Àº À§Ä¡¸¦ ã¾Æ ¾ÕÂÊ ¹Ýº¹ÀÚÀÇ À§Ä¡¸¦ ¸®ÅÏÇÑ´Ù. ÀÎÁ¢ÇÑ µÎ ¿ä¼Ò°¡ °°Àº °ÍÀÌ ¾øÀ¸¸é last°¡ ¸®ÅϵȴÙ. ´ÙÀ½ ¿¹Á¦´Â º¤ÅÍ¿¡¼­ °°Àº °ªÀÌ µÎ ¹ø ¿¬¼ÓÀ¸·Î ³ª¿À´Â À§Ä¡¸¦ °Ë»öÇÑ´Ù.

 

¿¹ Á¦ : adjacent_find

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

 

void main()

{

     int ari[]={1,9,3,6,7,5,5,8,1,4};

     vector<int> vi(&ari[0],&ari[9]);

 

     vector<int>::iterator it;

     it=adjacent_find(vi.begin(),vi.end());

     if (it != vi.end()) {

          printf("µÎ ¿ä¼Ò°¡ ÀÎÁ¢ÇÑ °ªÀº %dÀÔ´Ï´Ù.\n",*it);

     }

}

 

Á¤¼ö º¤ÅÍ¿¡¼­ ÀÎÁ¢ ¿ä¼Ò¸¦ °Ë»öÇߴµ¥ º¸´Ù½ÃÇÇ 5°¡ µÎ °³ ¿¬¼ÓÀûÀ¸·Î µé¾î ÀÖ´Ù. adjacent_find·Î °Ë»öÇÑ °á°ú ¾ÕÂÊ 5ÀÇ ¹Ýº¹ÀÚ°¡ ¸®Å쵃 °ÍÀÌ´Ù.

 

µÎ ¿ä¼Ò°¡ ÀÎÁ¢ÇÑ °ªÀº 5ÀÔ´Ï´Ù.

 

Á¶°ÇÀÚ°¡ ÀÖ´Â ÇÔ¼ö¸¦ »ç¿ëÇϸé == ¿¬»êÀÚ ´ë½Å Á¶°ÇÀÚ ÇÔ¼ö °´Ã¼¸¦ »ç¿ëÇÏ¿© µÎ ¿ä¼ÒÀÇ Á¶°ÇÀ» Á¡°ËÇϴµ¥ ÀÌ ÇÔ¼öÀÇ ºñ±³ ¹æ½Ä¿¡ µû¶ó ¾ÕÂÊ ¿ä¼Ò°¡ ´õ Å« ÃÖÃÊÀÇ ½Ö, ÀÎÁ¢ÇÑ °ªÀÌ 2¹èµÇ´Â ½Ö, ¼­·Î ¼ÒÀÎ ½Ö µîÀ» °Ë»öÇÒ ¼öµµ ÀÖ´Ù. µÎ ¿ä¼ÒÀÇ ¾î¶°ÇÑ °ü°èµçÁö °Ë»ö °¡´ÉÇÏ´Ù. ¿¹Á¦¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇØ º¸ÀÚ.

 

bool divisor(int a, int b)

{

     return (a%b == 0);

}

     ....

     it=adjacent_find(vi.begin(),vi.end(),divisor);

     if (it != vi.end()) {

          printf("ÃÖÃÊ·Î ¹ß°ßµÈ ¾à¼ö °ü°è´Â %d,%dÀÔ´Ï´Ù.\n",*it,*(it+1));

     }

 

divisor ÇÔ¼ö´Â µÎ Á¤¼ö a, b¸¦ Àü´Þ¹Þ¾Æ a°¡ b·Î ³ª´©¾î ¶³¾îÁö´ÂÁö¸¦ °Ë»çÇÑ´Ù. adjacent_find·Î divisor Á¶°ÇÀÚ¸¦ ÁöÁ¤ÇÏ¸é ¾Õ ¿ä¼Ò°¡ µÞ ¿ä¼ÒÀÇ ¹è¼ö(µÞ ¿ä¼Ò°¡ ¾Õ ¿ä¼ÒÀÇ ¾à¼ö)ÀÎ ÃÖÃÊÀÇ ½ÖÀ» °Ë»öÇÒ °ÍÀÌ´Ù. ¿¹Á¦¿¡¼­´Â ÀÌ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ÃÖÃÊÀÇ °ªÀÌ 9¿Í 3ÀÌ´Ù. ¸¸¾à ÀÌ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ¸ðµç ½ÖÀ» °Ë»öÇÏ°í ½Í´Ù¸é ·çÇÁ¸¦ µ¹¸®¸é µÈ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¹®ÀÚ¿­ Áß ÀÌÁß °ø¹éÀ» ã´Â´Ù.

 

¿¹ Á¦ : adjacent_find2

#include <iostream>

#include <algorithm>

using namespace std;

 

bool doublespace(char a, char b)

{

     return (a==' ' && b== ' ');

}

 

void main()

{

     const char *str="±â´Ù¸²Àº  ¸¸³²À» ¸ñÀûÀ¸·Î ÇÏÁö ¾Ê¾Æµµ  ÁÁ´Ù.";

 

     const char *p,*pend=&str[strlen(str)];

     for (p=str;;p++) {

          p=adjacent_find(p,pend,doublespace);

          if (p==pend) break;

          cout << p-str << "À§Ä¡¿¡ ÀÌÁß °ø¹éÀÌ ÀÖ½À´Ï´Ù." << endl;

     }

}

 

¹®ÀåÀ» ÃÄ ³Ö´Ù º¸¸é ½Ç¼ö·Î °ø¹éÀ» µÎ ¹ø ÀÔ·ÂÇÏ´Â °æ¿ìµµ Àִµ¥ ÀÎÁ¢ÇÑ µÎ ¹®ÀÚ°¡ °ø¹éÀÌ¸é ±× À§Ä¡¸¦ Ãâ·ÂÇϵµ·Ï Çß´Ù. find¿¡ ºñÇØ ÀÎÁ¢ÇÑ µÎ ¿ä¼ÒÀÇ °ªÀ» ÇѲ¨¹ø¿¡ °Ë»çÇØ º¼ ¼ö ÀÖ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù.

 

8À§Ä¡¿¡ ÀÌÁß °ø¹éÀÌ ÀÖ½À´Ï´Ù.

37À§Ä¡¿¡ ÀÌÁß °ø¹éÀÌ ÀÖ½À´Ï´Ù.

 

´ÙÀ½ ÇÔ¼ö´Â ù ¹øÂ° ¹Ýº¹ÀÚ ±¸°£¿¡¼­ µÎ ¹øÂ° ¹Ýº¹ÀÚ ±¸°£ Áß Çϳª°¡ ÃÖÃÊ·Î ¹ß°ßµÇ´Â ÁöÁ¡À» ã´Â´Ù. °¢ ±¸°£Àº ¹°·Ð ¼ø¹æÇ⠹ݺ¹ÀÚ¸¦ Áö¿øÇÏ´Â ÀÓÀÇÀÇ ÄÁÅ×À̳ʸ¦ Áö½ÃÇÒ ¼ö ÀÖÀ¸¹Ç·Î º¤ÅÍ¿¡¼­ ¸®½ºÆ®ÀÇ ÇÑ ¿ä¼Ò¸¦ °Ë»öÇϰųª ¹Ý´ë·Îµµ °Ë»öÇÒ ¼ö ÀÖ´Ù.

 

FwdIt1 find_first_of(FwdIt1 first1, FwdIt1 last1, FwdIt2 first2, FwdIt2 last2 [, BinPred F]);

 

ÀÌ ÇÔ¼ö´Â ù ±¸°£ÀÇ ¸ðµç ¿ä¼Ò¿Í µÎ ¹øÂ° ±¸°£ÀÇ ¸ðµç ¿ä¼Ò¿¡ ´ëÇØ ÀÌÁß ·çÇÁ¸¦ µ¹¸ç µÎ °ªÀÌ Á¶°ÇÀ» ¸¸Á·ÇÏ´ÂÁö °Ë»çÇÑ´Ù. µðÆúÆ® Á¶°ÇÀº == ÀÌÁö¸¸ ¸¶Áö¸· Àμö·Î ÀÌÇ× Á¶°ÇÀÚ¸¦ ÁöÁ¤ÇÏ¸é ¿øÇÏ´Â Á¶°ÇÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

 

¿¹ Á¦ : find_first_of

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

 

void main()

{

     int ar1[]={3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6,2,6,4,3};

     int ar2[]={2,4,6,8,0};

 

     int *p=find_first_of(&ar1[0],&ar1[25],&ar2[0],&ar2[4]);

     if (p!=&ar1[25]) {

          printf("ÃÖÃÊÀÇ Â¦¼ö´Â %d¹øÂ°ÀÇ %dÀÔ´Ï´Ù.\n",p-ar1,*p);

     }

}

 

µÎ °³ÀÇ Á¤¼ö ¹è¿­À» ¼±¾ðÇϰí ar1¿¡¼­ ar2¿¡ ÀÖ´Â °ª Áß Çϳª°¡ ¹ß°ßµÇ´Â ÃÖÃÊÀÇ ÁöÁ¡À» ã´Â´Ù. ¿¹Á¦¿¡¼­ ar2¿¡ ¸ðµç ¦¼ö¸¦ ³ª¿­ÇØ µÎ¾úÀ¸¹Ç·Î ar1ÀÇ ÃÖÃʷΠ¦¼öÀÎ ¼ö°¡ °Ë»öµÉ °ÍÀÌ´Ù.

 

ÃÖÃÊÀÇ Â¦¼ö´Â 2¹øÂ°ÀÇ 4ÀÔ´Ï´Ù.

 

¿©·¯ °³ÀÇ Á¶°Ç Áß Çϳª¶óµµ ¸¸Á·ÇÏ´Â ¿ä¼Ò¸¦ °Ë»öÇÏ°í ½ÍÀ» ¶§ ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. C Ç¥ÁØ ¹®ÀÚ¿­ ÇÔ¼ö Áß strpbrk¿Í À¯»çÇѵ¥ ÃÖÃÊ·Î ³ªÅ¸³ª´Â ¸ðÀ½À» °Ë»öÇѴٰųª °ø¹éÀ¸·Î ÀÎÁ¤µÉ¸¸ÇÑ ¹®ÀÚµéÀ» °Ë»öÇÒ ¶§ ÀÌ ÇÔ¼ö°¡ »ç¿ëµÈ´Ù. find_first_of´Â ÀÓÀÇ Å¸ÀÔÀÇ ÄÁÅ×À̳ʿ¡ ´ëÇØ »ç¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÈξÀ ´õ Ȱ¿ë ¹üÀ§°¡ ³Ð´Ù.