equal ÇÔ¼ö´Â µÎ °³ÀÇ ¹Ýº¹ÀÚ ±¸°£À» ºñ±³ÇÏ¿© µÎ ±¸°£ÀÌ ¿ÏÀüÈ÷ ÀÏÄ¡ÇÏ´ÂÁö ¾Æ´ÑÁö¸¦ °Ë»çÇÑ´Ù.
bool equal(InIt1 first1, InIt1 last1, InIt2 first2 [, BinPred F]);
first1 ~ last1 »çÀÌÀÇ ±¸°£°ú first2 ÀÌÈÄÀÇ ±¸°£¿¡ ÀÖ´Â ¿ä¼ÒµéÀ» ÀÏ´ëÀÏ·Î ºñ±³ÇØ º¸°í ¸ðµç ¿ä¼Ò°¡ ÀÏÄ¡Çϸé true¸¦ ¸®ÅÏÇϰí Çϳª¶óµµ Ʋ¸®¸é false¸¦ ¸®ÅÏÇÑ´Ù. µÎ ¹øÂ° ±¸°£Àº ½ÃÀÛ À§Ä¡¸¦ ÁöÁ¤ÇÏ´Â ¹Ýº¹ÀÚ¸¸ Àü´ÞµÇ°í ³¡ ¹Ýº¹ÀÚ´Â Àü´ÞµÇÁö ¾Ê´Âµ¥ µÎ ¹øÂ° ±¸°£µµ ù ¹øÂ° ±¸°£°ú ±æÀ̰¡ °°´Ù°í °¡Á¤ÇÑ´Ù. ±¸°£³¢¸® ºñ±³ÇÒ ¶§´Â ¾îÂ÷ÇÇ °°Àº Å©±âÀÇ ±¸°£À» ºñ±³ÇÏ´Â °æ¿ì°¡ ¾ÐµµÀûÀ¸·Î ¸¹À¸¹Ç·Î ÀÌ °¡Á¤¿¡´Â º° ¹«¸®°¡ ¾ø´Ù.
µÎ °³ÀÇ ¶È°°Àº ±¸°£À» Àü´Þ¹Þ´Â ÇÔ¼öµéÀº º¸Åë µÎ ¹øÂ° ±¸°£ÀÇ ±æÀ̸¦ Àü´Þ¹Þ´Â Àμö°¡ µû·Î ¾ø°í ù ¹øÂ° ±¸°£ÀÇ ±æÀ̸¦ »ç¿ëÇÑ´Ù. µÎ ¹Ýº¹ÀÚ ±¸°£Àº ¹Ýµå½Ã °°Àº ÄÁÅ×À̳ʿ¡ ¼Ò¼ÓµÉ ÇÊ¿ä´Â ¾øÀ¸¸ç ÄÁÅ×À̳ÊÀÇ Å¸ÀÔÀÌ ´Þ¶óµµ »ó°ü¾ø´Ù. Áï, º¤ÅÍ¿Í ¸®½ºÆ®³¢¸®µµ ºñ±³ °¡´ÉÇÏ´Ù´Â ¾ê±âÀε¥ ÇÔ¼ö ¿øÇü¿¡ º¸´Ù½ÃÇÇ InIt1, Init2 µîÀ¸·Î ¹Ýº¹ÀÚ Å¸ÀÔÀÌ ´Ù¸¦ ¼ö ÀÖ´Ù´Â °ÍÀÌ Ç¥±âµÇ¾î ÀÖ´Ù. ¾î¶² ÄÁÅ×À̳ÊÀÇ ¹Ýº¹ÀÚÀ̵çÁö ÀԷ¸¸ °¡´ÉÇÏ¸é ±¸°£ ºñ±³ ¿¬»êÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù.
¹Ýº¹ÀÚ ±¸°£ÀÇ ´ëÀÀµÇ´Â ¿ä¼Ò³¢¸® ºñ±³ÇÒ ¶§ µðÆúÆ®·Î == ¿¬»êÀÚ¸¦ »ç¿ëÇϵµ·Ï µÇ¾î ÀÖ¾î µ¿Àϼº ºñ±³¸¦ ¼öÇàÇϴµ¥ Ưº°ÇÑ ºñ±³ ¹æ½ÄÀ» »ç¿ëÇÏ°í ½Í´Ù¸é ÀÌÇ× Á¶°ÇÀÚ F¸¦ Á¦°øÇÑ´Ù. ÀÌ ÇÔ¼ö °´Ã¼´Â ´ëÀÀµÇ´Â µÎ ¿ä¼Ò¸¦ Àμö·Î Àü´Þ¹Þ¾Æ ¿øÇÏ´Â ¹æ¹ýÀ¸·Î ºñ±³ÇÑ ÈÄ µÎ ¿ä¼Ò°¡ °°À¸¸é true¸¦ ¸®ÅÏÇÑ´Ù. °´Ã¼ÀÇ ÀϺΠ¸â¹ö¸¸ ºñ±³ÇÒ ¼öµµ ÀÖ°í ¾î´À Á¤µµÀÇ ¿ÀÂ÷¸¦ ¹«½ÃÇÒ ¼öµµ ÀÖ´Ù.
¿¹ Á¦ : equal |
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void main()
{
int ari[]={8,9,0,6,2,9,9};
vector<int> vi(&ari[0],&ari[7]);
if (equal(&ari[0],&ari[7],vi.begin())) {
puts("µÎ ±¸°£Àº µ¿ÀÏÇÏ´Ù");
} else {
puts("µÎ ±¸°£Àº Ʋ¸®´Ù.");
}
}
Á¤¼ö ¹è¿·ÎºÎÅÍ Á¤¼ö º¤Å͸¦ ¸¸µé°í ÀÌ µÎ ÄÁÅ×À̳ʰ¡ µ¿ÀÏÇÑÁö ºñ±³ÇßÀ¸¹Ç·Î ºñ±³ °á°ú´Â ´ç¿¬È÷ °°Àº °ÍÀ¸·Î ³ª¿Ã °ÍÀÌ´Ù. º¤ÅÍ ÃʱâÈ ÈÄ¿¡ ari[5]=99; ´ëÀÔ¹®À¸·Î ¹è¿ÀÇ ¿ä¼Ò Çϳª¸¦ º¯°æÇØ ³õ°í ºñ±³ÇÏ¸é Æ²¸®´Ù´Â °á°ú°¡ Ãâ·ÂµÈ´Ù. equalÀº Àüü°¡ °°¾Æ¾ß¸¸ true¸¦ ¸®ÅÏÇÏ¸ç ´Ü Çϳª¶óµµ Ʋ¸®¸é °á°ú´Â falseÀÌ´Ù. ÇÔ¼ö °´Ã¼¸¦ ÁöÁ¤ÇÏ¸é µÎ ¿ä¼Ò°¡ °°´Ù´Â Á¶°ÇÀ» ¸¶À½´ë·Î º¯°æÇÒ ¼ö ÀÖ´Ù.
¿¹ Á¦ : equal2 |
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(double a,double b)
{
return ((int)a == (int)b);
}
void main()
{
double af1[]={ 45.34, 77.84, 96.22, 91.04, 85.24 };
double af2[]={ 45.99, 77.25, 96.86, 91.23, 86.13 };
if (equal(&af1[0],&af1[4],&af2[0],compare)) {
puts("ÁöÁ¤ ±¸°£ÀÇ Á¤¼öºÎ°¡ ¸ðµÎ °°´Ù.");
} else {
puts("ÁöÁ¤ ±¸°£ÀÇ Á¤¼öºÎ Áß ÀϺΰ¡ ÀÏÄ¡ÇÏÁö ¾Ê´Â´Ù.");
}
}
µÎ °³ÀÇ ½Ç¼ö ¹è¿À» ºñ±³Ç쵂 Á¤¼öºÎ¸¸ ºñ±³Çß´Ù. ¼Ò¼öºÎ´Â º°·Î Áß¿äÇÏÁö ¾ÊÀ» °æ¿ì Á¤¼öºÎ¸¸ ºñ±³Çϵµ·Ï ºñ±³ ¹æ¹ýÀ» ÇÔ¼ö °´Ã¼·Î ÁöÁ¤Çß´Ù. af1ÀÇ Ã¹ ¿ä¼Ò¸¦ 44.44·Î º¯°æÇÑ ÈÄ ½ÇÇàÇØ º¸¸é Ʋ¸®´Ù´Â º¸°í¸¦ ÇÒ °ÍÀÌ´Ù. ¶ÇÇÑ 0 ~ 4±îÁöÀÇ ±¸°£¸¸ ºñ±³Çߴµ¥ ±¸°£À» 0 ~ 5·Î È®´ëÇϸé À̶§µµ Ʋ¸° °ÍÀ¸·Î ÆÇ´ÜÇÑ´Ù.
mismatch ÇÔ¼ö´Â equalÀÇ ¹Ý´ë ÇÔ¼öÀε¥ µÎ ¹Ýº¹ÀÚ ±¸°£ Áß ÃÖÃʷΠƲ¸° ºÎºÐÀÌ ¾îµðÀΰ¡¸¦ ã´Â´Ù. equalÀº °°´Ù, ´Ù¸£´Ù¸¸ Á¶»çÇϴµ¥ ºñÇØ ÀÌ ÇÔ¼ö´Â Ʋ¸®´Ù¸é ¾îµðÂëÀÌ Æ²¸°Áöµµ Á¶»çÇÑ´Ù.
pair<InIt1, InIt2> mismatch(InIt1 first1, InIt1 last1, InIt2 first2 [,BinPred F]);
¸®ÅϰªÀº µÎ ±¸°£ÀÌ ÃÖÃÊ·Î ´Þ¶óÁø ÁöÁ¡ÀÇ ¹Ýº¹ÀÚ ½ÖÀ» pair °´Ã¼·Î ¹¾î¼ ¸®ÅÏÇÑ´Ù. ÀÌ ±¸Á¶Ã¼ÀÇ first, last¸¦ Á¡°ËÇØ º¸¸é ¾îµð°¡ ÃÖÃÊ·Î ´Ù¸¥ ÁöÁ¡ÀÎÁö¸¦ ¾Ë ¼ö ÀÖ´Ù. ¸ðµç ±¸°£ÀÌ ÀÏÄ¡ÇÑ´Ù¸é last1°ú first2+(last1-first1)ÀÇ ½ÖÀÌ ¸®ÅϵǴµ¥ first2+(last1-first1)À̶ó´Â ¼ö½ÄÀÌ º¹ÀâÇØ º¸ÀÌÁö¸¸ ¸»·Î °£´ÜÈ÷ ¼³¸íÇÏ¸é µÎ ¹øÂ° ±¸°£ÀÇ ³¡´ÙÀ½ÀÌ´Ù. ´ÙÀ½ µÎ ¹®ÀåÀÌ ¶È°°Àº Á¡°ËÀ» ÇÑ´Ù´Â °ÍÀº ½±°Ô ÀÌÇØ°¡ µÉ °ÍÀÌ´Ù.
equal(&ari[0],&ari[7],vi.begin())==true
mismatch(&ari[0],&ari[7],vi.begin()).first==ari[7]
¸ðµç ¿ä¼Ò°¡ ÀÏÄ¡ÇÑ´Ù´Â ¾ê±â³ª ÃÖÃʷΠƲ¸° ¿ä¼Ò°¡ ±¸°£ ¹Ù±ùÀÇ ³¡´ÙÀ½À̶ó´Â °ÍÀº °°Àº ¶æÀÌ´Ù. ÀÏ´Ü °£´ÜÇÑ ¿¹Á¦ºÎÅÍ º¸ÀÚ.
¿¹ Á¦ : mstmatch |
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void main()
{
int ari[]={8,9,0,6,2,9,9};
vector<int> vi(&ari[0],&ari[7]);
vi[3]=7;
pair<int *,vector<int>::iterator> p;
p=mismatch(&ari[0],&ari[7],vi.begin());
if (p.first != &ari[7]) {
printf("%d¹øÂ° ÀÚ¸®(%d,%d)ºÎÅÍ ´Ù¸£´Ù.\n",
p.first-ari,*(p.first),*(p.second));
} else {
puts("µÎ ÄÁÅ×À̳ʰ¡ ÀÏÄ¡ÇÑ´Ù.");
}
}
Á¤¼ö ¹è¿À» º¤ÅÍ·Î º¹»çÇÑ ÈÄ 3¹øÂ° ¿ä¼Ò¸¦ ´Ù¸¥ °ªÀ¸·Î ¹Ù²Ù¾î µÎ ÄÁÅ×À̳ʰ¡ Ʋ¸° °ªÀ» °¡Áöµµ·Ï Çß´Ù. mismatch·Î Á¶»çÇØ º¸¸é ÃÖÃʷΠƲ·ÁÁö´Â ÁöÁ¡ÀÇ ¹Ýº¹ÀÚµéÀÌ pair·Î ¹¿© ¸®ÅϵǸç ÀÌ ¹Ýº¹ÀÚ¸¦ ÀÐÀ¸¸é ¾îµð°¡ ¾î¶»°Ô Ʋ¸°Áö¸¦ ¾Ë ¼ö ÀÖ´Ù. vi[3]=7; ´ëÀÔ¹®À» ÁÖ¼® ó¸®ÇÑ ÈÄ ½ÇÇàÇϸé ÀÏÄ¡ÇÑ´Ù´Â °á°ú°¡ ¸®Å쵃 °ÍÀÌ´Ù.
´ÙÀ½ ¿¹Á¦´Â mismatch ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© Á¤´ä°ú ÇлýÀÌ ÀÛ¼ºÇÑ ´ä¾ÈÁöÀÇ °¢ ¿ä¼Ò¸¦ ºñ±³ÇÏ¿© ¿À´äµéÀ» °Ë»öÇÑ´Ù.
¿¹ Á¦ : mstmatch2 |
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void main()
{
int answer[]={1,1,4,3,2,4,3,2,3,4,1,2,4,4,3,2,1,3,2,4};
int paper[]= {1,1,4,3,3,4,3,1,3,4,1,2,4,4,3,4,1,3,2,2};
pair<int *,int *> p;
int i;
for (i=0;;) {
p=mismatch(&answer[i],&answer[20],&paper[i]);
if (p.first == &answer[20]) break;
printf("%d¹ø Ʋ¸², Á¤´ä=%d, ´Ï°¡ ¾´ ´ä=%d\n",
p.first-answer+1,*(p.first),*(p.second));
i=p.first-answer+1;
}
}
answer¿¡´Â Á¤´äÀÌ ÀúÀåµÇ¾î ÀÖ°í paper¿¡´Â ÇлýÀÌ ¾´ ´ä¾ÈÁö°¡ µé¾î ÀÖ´Ù. mismatch·Î ÀÌ µÎ ¹è¿À» ºñ±³Çϸռ Ʋ¸° ºÎºÐÀ» ã¾Æ³»´Âµ¥ ¸ðµç ¿À´äÀ» ´Ù ã¾Æ¾ß ÇϹǷΠ·çÇÁ¸¦ µ¹·È´Ù.
5¹ø Ʋ¸², Á¤´ä=2, ´Ï°¡ ¾´ ´ä=3
8¹ø Ʋ¸², Á¤´ä=2, ´Ï°¡ ¾´ ´ä=1
16¹ø Ʋ¸², Á¤´ä=2, ´Ï°¡ ¾´ ´ä=4
20¹ø Ʋ¸², Á¤´ä=4, ´Ï°¡ ¾´ ´ä=2
µÎ ¹è¿ÀÌ °°ÀÌ ÁøÇàµÇ¾î¾ß ÇϹǷΠ÷ÀÚ i¸¦ ½ÃÀÛ ¹Ýº¹ÀÚ·Î »ç¿ëÇÏ¸ç ¿À´äÀÌ ¹ß°ßµÇ¸é i´Â ´ÙÀ½ ¹®Á¦¸¦ °¡¸®Å°µµ·Ï Çß´Ù. ´äÀÌ Æ²·È´Ù´Â °Í »Ó¸¸ ¾Æ´Ï¶ó ¿Ö Ʋ·È´ÂÁö Á¤´ä°ú ÇлýÀÌ ¾´ ´äµµ °°ÀÌ Ãâ·ÂÇÒ ¼ö ÀÖ´Ù.