42-2.º¯°æ ¾Ë°í¸®Áò

º¯°æ ¾Ë°í¸®ÁòÀº ÀÐ±â ¾Ë°í¸®Áò°ú´Â ´Þ¸® ÄÁÅ×À̳ÊÀÇ ¿ä¼Ò¸¦ ¹Ù²Ü ¼ö ÀÖ´Â ¾Ë°í¸®ÁòÀÌ´Ù. ±×·¯³ª ¿ä¼ÒÀÇ °ª¸¸ º¯°æÇÒ ¼ö ÀÖÀ» »ÓÀÌÁö ÄÁÅ×ÀÌ³Ê ÀÚü¿¡ ´ëÇؼ­´Â ¾î¶°ÇÑ Á¶ÀÛµµ ÇÏÁö ¸øÇÑ´Ù´Â Á¡À» ÁÖÀÇÇÏÀÚ. ¿ä¼Ò¸¦ Á¦°ÅÇѴٰųª »õ·Î¿î ¿ä¼Ò¸¦ »ðÀÔÇѴٰųª ÄÁÅ×À̳ÊÀÇ Å©±â¸¦ º¯°æÇÏ´Â °Íµµ ºÒ°¡´ÉÇÏ´Ù. ¿Ö³ÄÇϸé STLÀÇ ¾Ë°í¸®ÁòµéÀº Ư¼öÇÑ ÄÁÅ×À̳ʿ¡ ¼Ò¼ÓµÇ¾î ÀÖ´Â °ÍÀÌ ¾Æ´Ï¶ó ÀÓÀÇÀÇ ÄÁÅ×ÀÌ³Ê¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÀϹÝÈ­µÇ¾î Àֱ⠶§¹®ÀÌ´Ù.

¾Ë°í¸®ÁòÀÌ ÄÁÅ×À̳ʿ¡ Á¢±ÙÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ¹Ýº¹ÀÚ¸¦ ÅëÇÏ´Â °Í »ÓÀÌ¸ç ¹Ýº¹ÀÚ´Â ÄÁÅ×À̳ÊÀÇ ¿ä¼Ò¸¦ ¾×¼¼½ºÇÏ´Â ÀϹÝÈ­µÈ ¹æ¹ýÀ» Á¦°øÇÒ »ÓÀÌÁö ÄÁÅ×ÀÌ³Ê ÀÚü¸¦ ¾×¼¼½ºÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ¾Ë°í¸®ÁòÀÌ ÀϹݼºÀ» ȹµæÇÒ ¼ö ÀÖ´Â ÀÌÀ¯´Â ¹Ýº¹ÀÚ¸¦ ÅëÇؼ­¸¸ ÄÁÅ×À̳ÊÀÇ ¿ä¼Ò¸¦ ¾×¼¼½ºÇϹǷΠÄÁÅ×À̳ÊÀÇ ±¸Á¶¸¦ ¸ô¶óµµ ¾à¼ÓµÈ ¹æ¹ý(ÁÖ·Î ¿¬»êÀÚ)¸¸À¸·Îµµ ÇÏ°í ½ÍÀº µ¿ÀÛÀ» ´Ù ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.

¾Ë°í¸®ÁòÀº ÀÚ½ÅÀÌ ¾×¼¼½ºÇÏ´Â ÄÁÅ×À̳ʰ¡ ¾î¶² ±¸Á¶¸¦ °¡Áö°í ÀÖ´ÂÁö »ó°üÇÏÁö ¾ÊÀ¸¸ç ³»ºÎÀûÀÎ ±¸Á¶¿¡ »ó°ü¾øÀÌ ½ÇÇàµÈ´Ù. ½ÉÁö¾î ¾î¶² ÄÁÅ×À̳ʸ¦ Á¶ÀÛÇÏ°í ÀÖ´Â ÁßÀÎÁöµµ ÀüÇô ¸ð¸¥´Ù. µû¶ó¼­ ÄÁÅ×À̳ʿ¡ »õ ¿ä¼Ò¸¦ ¾î¶»°Ô »ðÀÔÇÏ´ÂÁöµµ ¸ð¸£°í, »èÁ¦ÇÏ´Â ¹æ¹ýµµ ¾ËÁö ¸øÇÏ´Â °ÍÀÌ´Ù. ¾Ë°í¸®ÁòÀÌ ÄÁÅ×À̳ʿ¡ ´ëÇØ ÇÒ ¼ö ÀÖ´Â ÀÏÀº ¿ä¼Ò°ªÀ» º¯°æÇϰųª º¹»ç, ±³È¯ÇÏ´Â Á¤µµ¿¡ ºÒ°úÇÏ´Ù. ÄÁÅ×ÀÌ³Ê ÀÚü¿¡ ´ëÇÑ Á¶ÀÛÀº °³º° ÄÁÅ×À̳ÊÀÇ ¸â¹ö ÇÔ¼ö¸¦ ÅëÇؼ­¸¸ ¼öÇàÇÒ ¼ö ÀÖ´Ù.

42-2-°¡.copy

copy ¾Ë°í¸®ÁòÀº ÁöÁ¤ÇÑ ±¸°£À» º¹»çÇϴµ¥ ÁÖ·Î ÀϺΠ¿ä¼ÒµéÀ» ´Ù¸¥ ÄÁÅ×À̳ʷΠº¹»çÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÑ´Ù. °°Àº ŸÀÔÀÇ ÄÁÅ×ÀÌ³Ê Àüü¸¦ ¿ÏÀüÈ÷ º¹»çÇÏ·Á¸é copy ÇÔ¼ö¸¦ ¾µ ÇÊ¿ä¾øÀÌ ÄÁÅ×À̳ÊÀÇ = ¿¬»êÀÚ·Î ´ëÀÔÇØ ¹ö¸®¸é µÈ´Ù. º¹»ç ¹æÇâ¿¡ µû¶ó ´ÙÀ½ µÎ °³ÀÇ ÇÔ¼ö°¡ Á¤ÀǵǾî ÀÖ´Ù.

 

OutIt copy(InIt first, InIt last, OutIt result);

BiIt copy_backward(BiIt first, BiIt last, BiIt result);

 

copy ÇÔ¼ö´Â first~last »çÀÌÀÇ ¸ðµç ¿ä¼Ò¸¦ result¹Ýº¹ÀÚ À§Ä¡ ÀÌÈÄ¿¡ º¹»çÇÑ´Ù. º¹»ç ¸ñÀûÁöÀÇ ½ÃÀÛ À§Ä¡´Â result ¹Ýº¹ÀÚ Çϳª·Î¸¸ ÁöÁ¤µÇ¸ç ±æÀÌ´Â ¿øº»°ú °°´Ù°í °¡Á¤ÇϹǷΠresultÀÌÈÄ last - first¸¸Å­ÀÇ ±â¾ï Àå¼Ò°¡ ¹Ì¸® È®º¸µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. ¹Ýº¹ÀÚ´Â °°Àº ÄÁÅ×À̳ÊÀÇ ´Ù¸¥ ºÎºÐÀÏ ¼öµµ ÀÖÁö¸¸ ´Ù¸¥ ÄÁÅ×À̳ÊÀÇ ¹Ýº¹ÀÚ ±¸°£³¢¸®µµ ¹°·Ð º¹»çÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â µÎ °³ÀÇ ¹®ÀÚ¿­³¢¸® º¹»çÇÑ´Ù.

 

¿¹ Á¦ : copy

#include <iostream>

#include <algorithm>

using namespace std;

 

void main()

{

     char src[]="1234567890";

     char dest[]="abcdefghij";

 

     copy(&src[3],&src[7],&dest[5]);

     puts(dest);

}

 

srcÀÇ 3~7±îÁöÀÇ ±¸°£ÀÌ destÀÇ 5 ÀÌÈÄÀÇ ±¸°£¿¡ º¹»çµÈ´Ù. ¿øº»ÀÇ ±æÀÌ°¡ 4À̹ǷΠ¸ñÀûÁöÀÇ ±æÀ̵µ 4ÀÌ´Ù.

½ÇÇà °á°ú´Â abcde4567j°¡ µÉ °ÍÀÌ´Ù. copy ÇÔ¼ö´Â À̸§ÀÌ ÀǹÌÇϵíÀÌ º¹»ç¸¦ ÇÒ »ÓÀÌÁö ¿øº»ÀÇ ¿ä¼Ò¸¦ ¸ñÀûÁö¿¡ »ðÀÔÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù. µû¶ó¼­ result ¹Ýº¹ÀÚ ÀÌÈĺÎÅÍ ¿øº»ÀÇ ±æÀ̸¸Å­ ¹Ì¸® È®º¸µÇ¾î ÀÖÁö ¾ÊÀ¸¸é °á°ú´Â ¿¹»óÇÒ ¼ö ¾ø´Ù. À§ ¿¹Á¦ÀÇ º¹»ç ¸ñÀûÁö¸¦ dest[9]·Î º¯°æÇÏ¸é ¹è¿­ µÚÂÊÀ» µ¤¾î¾²¹Ç·Î ¾Æ¸¶µµ ´Ù¿îµÉ °ÍÀÌ´Ù. ÀÌ·² ¶§ »ðÀÔ ¹Ýº¹ÀÚ¸¦ »ç¿ëÇÏ¸é º¹»ç¿Í µ¿½Ã¿¡ ¿ä¼Ò¸¦ »ðÀÔÇÒ ¼ö ÀÖ´Ù.

 

¿¹ Á¦ : copy2

#include <iostream>

#include <list>

#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; }

 

void main()

{

     char src[]="1234567890";

     list<char> li;

 

     copy(&src[3],&src[7],back_inserter(li));

     dump("list",li);

}

 

li ¸®½ºÆ®´Â ºó »óÅ·Π»ý¼ºµÇ¾úÀ¸¹Ç·Î ±â¾ï Àå¼Ò¸¦ ÀüÇô È®º¸ÇÏÁö ¾Ê°í ÀÖÁö¸¸ back_inserter ¹Ýº¹ÀÚ°¡ ´ëÀÔ µ¿ÀÛÀ» push_back »ðÀÔ µ¿ÀÛÀ¸·Î ÀçÁ¤ÀÇÇϹǷΠº¹»çµÇ´Â Á·Á· ¸®½ºÆ®ÀÇ Å©±â°¡ ´Ã¾î³­´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

list        ==> 4 5 6 7

 

¸¸¾à copy(&src[3],&src[7],li.begin()); À¸·Î º¹»ç¸¦ ¼öÇàÇϸé ÄÄÆÄÀÏÀº Àß µÇ°ÚÁö¸¸ Çã°¡µÇÁö ¾ÊÀº ¿µ¿ª¿¡ ¾²±â µ¿ÀÛÀ» ¼öÇàÇϹǷΠ´çÀå ´Ù¿îµÇ¾î ¹ö¸± °ÍÀÌ´Ù. ÀÏ¹Ý ¾Ë°í¸®ÁòÀº ÄÁÅ×À̳ʸ¦ º¯°æÇÒ ¼ö ¾øÁö¸¸ »ðÀÔ ¹Ýº¹ÀÚ¸¦ ¾²´Â °æ¿ì¿¡´Â ¿ä¼Ò¸¦ Ãß°¡·Î »ðÀÔÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. »ðÀÔ ¹Ýº¹ÀÚ´Â ÀÚ½ÅÀÌ Àû¿ëÇÒ ÄÁÅ×À̳ʿ¡ ´ëÇÑ Á¤º¸¸¦ Àü´Þ¹ÞÀ¸¸ç ¾î¶² ½ÄÀ¸·Î »ðÀÔÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ¾Ë±â ¶§¹®ÀÌ´Ù.

°°Àº ÄÁÅ×À̳ʳ¢¸®µµ º¹»çÇÒ ¼ö Àִµ¥ À̶§´Â º¹»ç ¹æÇâ¿¡ ½Å°æÀ» ½á¾ß ÇÑ´Ù. copy´Â first¿¡¼­ºÎÅÍ ½ÃÀÛÇؼ­ last·Î À̵¿Çϸ鼭 ÇÑ ¿ä¼Ò¾¿ ¼ø¼­´ë·Î º¹»çÇϴµ¥ ¿øº»°ú ¸ñÀû ±¸°£ÀÌ °ãÃÄ ÀÖÀ¸¸é ¿øº»ÀÌ ¾ÕÂÊ º¹»ç¿¡ ÀÇÇØ Àб⵵ Àü¿¡ Æı«µÇ´Â ¹®Á¦°¡ ÀÖ´Ù. ±×·¡¼­ ¿ª¹æÇâÀ¸·Î ÁøÇàÇϸ鼭 º¹»çÇÏ´Â copy_backward ÇÔ¼ö°¡ µû·Î ¸¶·ÃµÇ¾î ÀÖ´Â °ÍÀÌ´Ù. ¸®½ºÆ®·Î ÀÌ ¹®Á¦¸¦ Å×½ºÆ®ÇØ º¸ÀÚ.

 

¿¹ Á¦ : copy_backward

#include <iostream>

#include <list>

#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; }

 

void main()

{

     int i;

     list<int> li,li2;

     list<int>::iterator first,last,result,it;

 

     for (i=0;i<10;i++) li.push_back(i);

     li2=li;

 

     dump("º¹»çÀü",li);

     first=find(li.begin(),li.end(),2);

     last=find(li.begin(),li.end(),7);

     result=find(li.begin(),li.end(),3);

     copy(first,last,result);

     dump("copy",li);

 

     first=find(li2.begin(),li2.end(),2);

     last=find(li2.begin(),li2.end(),7);

     result=find(li2.begin(),li2.end(),8);

     copy_backward(first,last,result);

     dump("back",li2);

}

 

0 ~ 9±îÁöÀÇ Á¤¼ö¸¦ ¸®½ºÆ®¿¡ ³Ö¾î ³õ°í 2 ~ 6±îÁöÀÇ ¿ä¼Ò¸¦ 3¹ø À§Ä¡, Áï ÇÑÄ­ ¿À¸¥ÂÊÀ¸·Î º¹»çÇ쵂 ÇÑ ¹øÀº copy¸¦ ÇÑ ¹øÀº copy_backward¸¦ »ç¿ëÇß´Ù.

 

º¹»çÀü      ==> 0 1 2 3 4 5 6 7 8 9

copy        ==> 0 1 2 2 2 2 2 2 8 9

back        ==> 0 1 2 2 3 4 5 6 8 9

 

¿ª¹æÇâÀ¸·Î º¹»çÇÒ ¶§´Â Á¦´ë·Î º¹»çµÇ¾ú´Âµ¥ ¼ø¹æÇâÀ¸·Î º¹»çÇÒ ¶§´Â ¹º°¡ À߸øµÈ º¹»ç¸¦ ÇÏ°í ÀÖ´Ù. ¿Ö ±×·±Áö º¹»ç ¼ø¼­¸¦ Àß »ý°¢ÇØ º¸ÀÚ.

¼ø¹æÇâÀ¸·Î º¹»çÇÒ ¶§ first À§Ä¡ÀÇ 2°¡ Á¦ÀÏ ¸ÕÀú 3ÀÇ À§Ä¡·Î º¹»çµÇ´Âµ¥ ¿©±â±îÁö´Â Á¤»óÀûÀÌ´Ù. ±×·¯³ª ´ÙÀ½ À§Ä¡ÀÇ 3À» 4ÀÇ À§Ä¡·Î º¹»çÇÒ ¶§´Â ÀÌ¹Ì 3ÀÌ ¾ÕÂÊ¿¡ 2ÀÇ ÀÇÇØ Æı«µÇ¾î ¹ö·ÈÀ¸¹Ç·Î 3ÀÌ ¾Æ´Ñ 2°¡ º¹»çµÇ¸ç ÀÌÈÄÀÇ °úÁ¤µµ ¸¶Âù°¡ÁöÀÌ´Ù. ¿øº»ÀÌ º¹»çµÇ±â Àü¿¡ ¸ÕÀú º¯ÇØ ¹ö¸®±â ¶§¹®¿¡ ±¸°£³»ÀÇ ¸ðµç ¿ä¼Ò°¡ 2·Î º¯ÇØ ¹ö¸®´Â °ÍÀÌ´Ù.

¿ª¹æÇâÀ¸·Î º¹»çÇÒ ¶§´Â ¿øº»ÀÌ ¸ÕÀú º¹»çµÇ°í ´Ù¸¥ °ªÀ» ´ëÀÔ¹ÞÀ¸¹Ç·Î ÀÌ·± ¹®Á¦°¡ ¾ø´Ù. 6À» 7 ÀÚ¸®¿¡ ¸ÕÀú ´ëÇÇÇØ ³õ°í 5¸¦ 6ÀÚ¸®¿¡ º¹»çÇϹǷΠ¾ÈÀüÇÏ´Ù. ¿ª¹æÇâ º¹»ç ÇÔ¼ö´Â ¿øÇü¿¡ À־µµ ´Ù¼Ò Â÷ÀÌ°¡ Àִµ¥ copy ÇÔ¼ö´Â ¼ø¼­´ë·Î ÀÐÀ¸¹Ç·Î ÀÔ·Â ¹Ýº¹ÀÚÀ̱⸸ ÇÏ¸é µÇÁö¸¸ copy_backwardÇÔ¼ö´Â ¹Ýº¹ÀÚ°¡ ¹Ý´ë ¹æÇâÀ¸·Î ¿òÁ÷¿©¾ß ÇϹǷΠ¾ç¹æÇ⠹ݺ¹ÀÚ¿©¾ß ÇÑ´Ù.

¶ÇÇÑ result°¡ º¹»ç ¸ñÀûÁöÀÇ ½ÃÀÛÁ¡ÀÌ ¾Æ´Ï¶ó ³¡´ÙÀ½Á¡À̾î¾ß ÇÑ´Ù´Â Á¡µµ ´Ù¸£´Ù. ±¸°£À» ÇÑÄ­ ¿À¸¥ÂÊÀ¸·Î À̵¿ÇÒ ¶§ ¼ø¹æÇâÀº 2 ~ 6À» 3ÀÇ ÀÚ¸®·Î À̵¿Ç϶ó´Â ½ÄÀ¸·Î Àμö¸¦ Àü´ÞÇÏÁö¸¸ ¿ª¹æÇâÀ¸·Î À̵¿ÇÒ ¶§´Â 2 ~ 6À» 8 ¾ÕÂÊÀ¸·Î À̵¿Ç϶ó´Â ½ÄÀ¸·Î Àμö¸¦ Àü´ÞÇØ¾ß ÇÑ´Ù. À̹ø¿¡´Â ¶È°°Àº ¿¹Á¦¸¦ º¤ÅÍ·Î ÀÛ¼ºÇØ º¸ÀÚ.

 

¿¹ Á¦ : copy_backward2

#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; }

 

void main()

{

     int i;

     vector<int> vi,vi2;

     for (i=0;i<10;i++) vi.push_back(i);

     vi2=vi;

 

     dump("º¹»çÀü",vi);

     copy(vi.begin()+2,vi.begin()+7,vi.begin()+3);

     dump("copy",vi);

     copy_backward(vi2.begin()+2,vi2.begin()+7,vi2.begin()+8);

     dump("back",vi2);

}

 

¶È°°Àº ¼Ò½º¸¦ ÀÛ¼ºÇߴµ¥ º¤ÅÍÀÇ °æ¿ì´Â º¹»ç ¹æÇâ¿¡ »ó°ü¾øÀÌ Àß µ¿ÀÛÇÑ´Ù. ¶È°°Àº ¼Ò½º¸¦ µ¥Å©¿¡ ´ëÇØ ÀÛ¼ºÇØ º¸¸é µ¥Å©´Â ¸®½ºÆ®¿Í ¸¶Âù°¡Áö·Î ¹æÇâÀÌ À߸øµÇ¸é ¿øº»ÀÌ Æı«µÈ´Ù.

 

º¹»çÀü      ==> 0 1 2 3 4 5 6 7 8 9

copy        ==> 0 1 2 2 3 4 5 6 8 9

back        ==> 0 1 2 2 3 4 5 6 8 9

 

À¯µ¶ º¤ÅÍ¿¡ ´ëÇؼ­¸¸ º¹»ç ¹æÇâ¿¡ »ó°ü¾øÀÌ Àß º¹»çµÇ´Âµ¥ ÀÌ´Â ±¸Çö ¹æ½Ä°ú °ü·ÃÀÌ ÀÖ´Ù. º¤ÅÍ´Â ¿ä¼ÒµéÀÌ ÀÎÁ¢ÇØ ÀÖ´Â ±¸Á¶¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î Á» ´õ ºü¸¥ º¹»ç¸¦ À§ÇØ memmove ÇÔ¼ö ¶Ç´Â ±×¿¡ ÁØÇÏ´Â ¸Þ¸ð¸® º¹»ç ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ÀÌ ÇÔ¼ö´Â CPUÀÇ ¸Þ¸ð¸® À̵¿ Äڵ带 È£ÃâÇϴµ¥ CPU°¡ º¹»ç ¹æÇâ¿¡ µû¶ó ¼ø¼­¸¦ ÀûÀýÇÏ°Ô Á¶Á¤Çϱ⠶§¹®¿¡ °ãÄ¡´õ¶óµµ Àß µ¿ÀÛÇÏ´Â °ÍÀÌ´Ù.

±×·¸´Ù¸é ¸®½ºÆ®ÀÇ °æ¿ì´Â ÀÌ·± ¹æÇâ ÀÚµ¿ ÆÇ´ÜÀ» ¿Ö ÇÒ ¼ö ¾øÀ»±î? ¸®½ºÆ®ÀÇ ³ëµå´Â ¸Þ¸ð¸®ÀÇ µµÃ³¿¡ Èð¾îÁ® ÀÖ¾î ¹Ýº¹ÀÚ¸¸À¸·Î´Â ¾ÕµÚ ¼ø¼­¸¦ ÆÇ´ÜÇÒ ¼ö ¾øÀ¸¸ç ±×·¡¼­ »ç¿ëÀÚ°¡ ¼öµ¿À¸·Î º¹»ç ¹æÇâÀ» ¼±ÅÃÇØ¾ß ÇÑ´Ù. ´ëºÎºÐÀÇ ÄÄÆÄÀÏ·¯¿¡¼­ º¤ÅÍ´Â º¹»ç ¹æÇâ¿¡ »ó°ü¾øµµ·Ï ±¸ÇöµÇ¾î ÀÖÁö¸¸ STL ½ºÆÑ¿¡ ±×·¸°Ô ±¸ÇöÇØ¾ß ÇÑ´Ù°í µÇ¾î ÀÖÁö´Â ¾ÊÀ¸¹Ç·Î °¡±ÞÀûÀÌ¸é ¹æÇâ¿¡ ¸Â´Â ÇÔ¼ö¸¦ ¼±ÅÃÇؼ­ »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.

´ÙÀ½Àº ¾ÆÁÖ ±âº»ÀûÀÎ ÇÔ¼ö¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. ´ÙÀ½ ÇÔ¼ö´Â À̸§¸¸ ºÁµµ ¹¹ÇÏ´Â ÇÔ¼öÀÎÁö ¾Ë ¼ö ÀÖÀ¸¹Ç·Î ±»ÀÌ µÎ °³ÀÇ °ªÀ» ±³È¯ÇÑ´Ù°í ¼³¸íÇÏÁö ¾Ê¾Æµµ µÉ °ÍÀÌ´Ù.

 

void swap(T& x, T& y);

 

³»ºÎ ¾Ë°í¸®ÁòÀº ¾ÆÁÖ ¿ø·ÐÀûÀε¥ º¸³ª¸¶´Ù T=a;a=b;b=T; ÀÌ´Ù. ±âº» ŸÀÔÀº ¹°·ÐÀÌ°í ÄÁÅ×À̳ʿ¡ ´ëÇؼ­µµ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ´ëÀÔ ¿¬»êÀÌ ´À¸° °æ¿ì´Â Ư¼öÈ­µÈ ÇÔ¼ö°¡ È£ÃâµÈ´Ù. ´ëºÎºÐÀÇ ÄÁÅ×ÀÌ³Ê Å¸ÀÔ¿¡ ´ëÇØ Æ¯¼öÈ­µÇ¾î ÀÖ¾î ÄÁÅ×À̳ÊÀÇ ±¸Á¶¿¡ µü ¸Â´Â ±³È¯ ¸â¹ö ÇÔ¼ö°¡ È£ÃâµÈ´Ù. µÎ °³ÀÇ º¤ÅÍ°¡ ÀÖÀ» ¶§ swap(v1,v2)´Â µÎ º¤ÅÍÀÇ ³»¿ëÀ» ¿ÏÀüÈ÷ ¹Ù²Û´Ù. ¸®½ºÆ®³ª º¤ÅÍ¿¡ ´ëÇؼ­´Â ¸µÅ©³ª ³»ºÎ Æ÷ÀÎÅ͸¸ Á¶ÀÛÇÏ´Â ¸â¹ö ÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï Ư¼öÈ­µÇ¾î ÀÖ¾î »ý°¢º¸´Ù ÈξÀ ºü¸£´Ù. ´ÙÀ½ ÇÔ¼ö´Â ¹Ýº¹ÀÚ ±¸°£³¢¸® ±³Ã¼ÇÑ´Ù.

 

FwdIt2 swap_ranges(FwdIt1 first1, FwdIt1 last1, FwdIt2 first2);

 

first1~last1»çÀ̸¦ first2±¸°£°ú ¹Ù²Û´Ù°í »ý°¢ÇÏ¸é µÈ´Ù. ´Ù¸¥ ÄÁÅ×À̳ÊÀÇ ¹Ýº¹ÀÚ ±¸°£³¢¸®µµ °ªÀ» ±³È¯ÇÒ ¼ö ÀÖµÇ µ¿ÀÏ ÄÁÅ×À̳ʳ»ÀÇ ±³È¯ÀÎ °æ¿ì ¹Ýº¹ÀÚ ±¸°£ÀÌ °ãÃļ­´Â ¾ÈµÈ´Ù.