40-2.¸®½ºÆ®¿Í µ¥Å©

40-2-°¡.¸®½ºÆ®

¸®½ºÆ®(list) ÄÁÅ×À̳ʴ ÀÌÁß ¿¬°á ¸®½ºÆ®¸¦ ÅÛÇø´À¸·Î Ãß»óÈ­ÇÑ ¹öÀüÀÌ´Ù. µ¿ÀÏÇÑ ÀÚ·áÀÇ ÁýÇÕÀ» °ü¸®ÇÑ´Ù´Â ¿ëµµ¸é¿¡¼­´Â º¤ÅÍ¿Í °°°í ½ÇÁ¦·Î ¼­·Î ´ëüµµ °¡´ÉÇÏ´Ù. ¿ëµµ°¡ °°±â ¶§¹®¿¡ ÀÎÅÍÆäÀ̽ºµµ °ÅÀÇ À¯»çÇÏ´Ù. »ý¼ºÀÚ´Â ¿ÏÀüÈ÷ ¶È°°°í »ðÀÔ, »èÁ¦ µî ÁÖ¿ä ¸â¹ö ÇÔ¼öÀÇ ¿øÇüµµ º¤ÅÍ¿Í ÀÏÄ¡ÇÏ¸ç ´ëÀÔ, ºñ±³ µîÀÇ ¿¬»êÀÚµµ µ¿ÀÏÇÏ°Ô Á¦°øµÈ´Ù.

Á¦°øÇÏ´Â ³»ºÎ ŸÀÔµµ value_type, iterator, reference µî À̸§ÀÌ µ¿ÀÏÇÏ´Ù. ¹°·Ð µÎ ÄÁÅ×À̳ÊÀÇ ³»ºÎ ±¸Á¶°¡ ÆÇÀÌÇÏ°Ô ´Ù¸£¹Ç·Î ÀÌ Å¸ÀÔµéÀÇ ½ÇÁ¦ ±¸ÇöÀº »ó´çÈ÷ ´Ù¸£´Ù. º¤ÅÍÀÇ ¹Ýº¹ÀÚ´Â ¿ä¼Ò¸¦ Á÷Á¢ °¡¸®Å°´Â Æ÷ÀÎÅÍ·Î µÇ¾î ÀÖÀ» °ÍÀÌ°í ¸®½ºÆ®ÀÇ ¹Ýº¹ÀÚ´Â ¸µÅ©¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ·Î ±¸ÇöµÇ¾î ÀÖÀ» °ÍÀÌ´Ù. ³»ºÎ ±¸ÇöÀÌ ´Ù¸£´õ¶óµµ ÀÎÅÍÆäÀ̽º°¡ µ¿ÀÏÇϹǷΠ»ç¿ëÇÏ´Â ¹æ¹ýÀº µ¿ÀÏÇÏ´Ù.

µÎ ÄÁÅ×À̳ʸ¦ ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ Â÷ÀÌÁ¡µµ ¿ª½Ã Á¸ÀçÇϴµ¥ °¢°¢ÀÇ Àå´ÜÁ¡À» Àß ÆÄ¾ÇÇØ¾ß ½Ç¹«¿¡ ÇÊ¿äÇÑ ÄÁÅ×À̳ʸ¦ ÁöÇý·Ó°Ô ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº º¤ÅÍ¿Í ¸®½ºÆ® ÄÁÅ×À̳ÊÀÇ ÁÖ¿ä Â÷ÀÌÁ¡Àε¥ ³»ºÎ ±¸Á¶°¡ ´Ù¸§À¸·Î ÀÎÇØ ¼º´ÉÀ̳ª Á¦°øÇÏ´Â ±â´É ¸ñ·Ï¿¡¼­ ¾à°£ÀÇ Â÷À̰¡ ÀÖ´Ù.

 

¨ç °¡Àå Å« Â÷ÀÌÁ¡Àº ¹Ýº¹ÀÚÀÇ ·¹º§Àε¥ º¤ÅÍ´Â ¿ä¼ÒµéÀÌ ÀÎÁ¢ÇØ ÀÖÀ¸¹Ç·Î ÀÓÀÇ Á¢±ÙÀÌ °¡´ÉÇÏÁö¸¸ ¸®½ºÆ®´Â ³ëµåµéÀÌ Èð¾îÁ® ÀÖÀ¸¹Ç·Î ¾ç¹æÇâÀ¸·Î¸¸ À̵¿ÇÒ ¼ö ÀÖÀ» »ÓÀÌ´Ù. ¹Ýº¹ÀÚ°¡ +n ¿¬»êÀ» Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î ¼ø¼­°ªÀ¸·Î ¿ä¼Ò¸¦ ¾×¼¼½ºÇÏ´Â [ ] ¿¬»êÀÚ¸¦ Áö¿øÇÏÁö ¾ÊÀ¸¸ç at ÇÔ¼öµµ ´ç¿¬È÷ Áö¿øµÇÁö ¾Ê´Â´Ù. ÀÓÀÇ À§Ä¡¸¦ »ó¼ö ½Ã°£¿¡ ¾×¼¼½ºÇÒ ¼ö ¾øÀ¸¸ç ¹Ýµå½Ã ¼øÈ¸¸¦ ÇØ¾ß¸¸ ¿øÇÏ´Â ¿ä¼Ò¸¦ ãÀ» ¼ö ÀÖ´Ù. ÀÓÀÇ Á¢±Ù ¹Ýº¹ÀÚ¸¦ ¿ä±¸ÇÏ´Â sort³ª binary_search ¾Ë°í¸®ÁòÀº ¸®½ºÆ®¿¡´Â »ç¿ëÇÒ ¼ö ¾ø´Ù.

¨è °¢ ¿ä¼ÒµéÀÌ ³ëµå·Î ÇÒ´çµÇ¾î ¸µÅ©¿¡ ÀÇÇØ ³í¸®ÀûÀ¸·Î ¿¬°áµÇ¾î ÀÖÀ¸¹Ç·Î ¸µÅ©¸¸ Á¶ÀÛÇØ¼­ »ðÀÔ, »èÁ¦¸¦ ¼öÇàÇÒ ¼ö ÀÖ´Ù. ¿ä¼ÒµéÀÌ ÀÎÁ¢ÇÏÁö ¾Ê¾Æµµ »ó°ü¾ø¾î »ðÀÔ, »èÁ¦½Ã¿¡ ¸Þ¸ð¸® À̵¿À» ÇÒ Çʿ䰡 ¾øÀ¸¸ç ±×·¡¼­ À§Ä¡¿¡ »ó°ü¾øÀÌ »ó¼ö ½Ã°£³»¿¡ »ðÀÔ, »èÁ¦¸¦ ÇÒ ¼ö ÀÖ´Ù. Á¦ÀÏ ¾Õ¿¡ ¿ä¼Ò¸¦ »ðÀÔ, »èÁ¦ÇÏ´Â push_front, pop_front ¸â¹ö ÇÔ¼öµµ Á¦°øµÈ´Ù. ÀÌ¿¡ ºñÇØ º¤ÅÍ´Â Áß°£¿¡¼­ »ðÀÔ, »èÁ¦ÇÒ ¶§ ¿ä¼ÒµéÀ» ¹Ð°í ´ç°Ü¾ß ÇϹǷΠ¼Óµµ°¡ ´Ù¼Ò ´À¸®´Ù. ¼Óµµ Èñ»ý¾øÀÌ ¾ðÁ¦µçÁö Å©±â¸¦ ´Ã¸®°Å³ª ÁÙÀÏ ¼ö ÀÖÀ¸¹Ç·Î óÀ½ºÎÅÍ ¹Ì¸® Å©±â¸¦ °áÁ¤ÇÒ Çʿ䰡 ¾øÀ¸¸ç capacity, reserveµµ ºÒÇÊ¿äÇÏ´Ù.

¨é ¸µÅ© ±¸Á¶·Î ÀÎÇØ ¸Þ¸ð¸® ¼Ò¸ð·®Àº º¤Åͺ¸´Ù ÈξÀ ´õ ¸¹´Ù. ¿ä¼Ò¸¦ ÀúÀåÇÏ´Â ³ëµå´Â ¹«Á¶°Ç µ¿Àû ÇÒ´çÇØ¾ß ÇÏ¸ç ¿ä¼Ò°£ÀÇ ¼ø¼­¸¦ ±â¾ïÇϱâ À§ÇÑ ¸µÅ©µµ º°µµÀÇ ¸Þ¸ð¸®¸¦ ¼Ò¸ðÇÑ´Ù. °Ô´Ù°¡ »ðÀÔ, »èÁ¦½Ã¸¶´Ù ³ëµå¸¦ ÇÒ´ç, ÇØÁ¦ÇÏ´Â °úÁ¤À» °è¼Ó ¹Ýº¹ÇϹǷΠ¸Þ¸ð¸® ´ÜÆíÈ­µµ ½ÉÇØ ½Ã½ºÅÛÀÇ ¸Þ¸ð¸® °ü¸® ´É·Â¿¡µµ ÁÁÁö ¾ÊÀº ¿µÇâÀ» ¹ÌÄ£´Ù.

¨ê »ðÀÔ, »èÁ¦¿¡ ÀÇÇØ ¿ä¼ÒµéÀÇ ¹°¸®ÀûÀÎ À§Ä¡°¡ ¹Ù²îÁö ¾ÊÀ¸¹Ç·Î ¹Ýº¹ÀÚ°¡ ¹«È¿È­µÇÁö ¾Ê´Â´Ù. ¹Ýº¹ÀÚ°¡ ¹«È¿È­µÇ´Â À¯ÀÏÇÑ °æ¿ì´Â ¹Ýº¹ÀÚ°¡ °¡¸®Å°´Â ´ë»óÀ» »èÁ¦ÇßÀ» ¶§ »ÓÀε¥ ¿ä¼Ò°¡ ¿ÏÀüÈ÷ »ç¶óÁ³À¸¹Ç·Î À̶§´Â ¾î¿ ¼ö ¾ø´Ù.

 

µÎ ÄÁÅ×À̳ÊÀÇ ¸ðµç Â÷ÀÌÁ¡Àº ¿ä¼Ò ÀÎÁ¢ ±¸Á¶°ú ¸µÅ© ¹æ½ÄÀÇ Â÷ÀÌÁ¡¿¡ ±âÀÎÇÑ´Ù. ÀÌ µÑÀÇ Â÷ÀÌÁ¡À» ¿ä¾àÇÏÀÚ¸é º¤ÅÍ´Â Àб⿡ °­ÇÏ°í ¸®½ºÆ®´Â ¾²±â¿¡ °­ÇÑ ÄÁÅ×À̳ʶó°í Á¤¸®ÇÒ ¼ö ÀÖ´Ù. Àб⠼ӵµ°¡ Áß¿äÇÏ¸é º¤Å͸¦ ¼±ÅÃÇÏ´Â °ÍÀÌ ÁÁ°í »ðÀÔ, »èÁ¦°¡ ¾ÆÁÖ ºó¹øÇÏ´Ù¸é ¸®½ºÆ®°¡ ´õ ³ªÀº ¼±ÅÃÀÌ´Ù.

±×·³, ÀÌÁ¦ ¸®½ºÆ®ÀÇ »ý¼ºÀÚºÎÅÍ ¿¬±¸ÇØ º¸ÀÚ. ¸®½ºÆ®ÀÇ »ý¼ºÀÚ´Â ¸ðµÎ 4°³ Á¦°øµÇ´Âµ¥ º¤ÅÍÀÇ »ý¼ºÀÚ¿Í ¿øÇüÀÌ µ¿ÀÏÇÏ´Ù. ¶È°°Àº ¸ñÀû¿¡ »ç¿ëÇÏ´Â ÄÁÅ×À̳ÊÀ̹ǷΠ»ý¼ºÇÏ´Â ¹æ¹ýºÎÅÍ °°À» ¼ö¹Û¿¡ ¾ø´Ù. Àß »ç¿ëµÇÁö ¾Ê´Â ÇÒ´ç±â Àμö´Â ¿øÇü¿¡¼­ »ý·«Çß´Ù.

 

explicit list();

explicit list(size_type n, const T& v = T());

list(const list& x);

list(const_iterator first, const_iterator last);

 

°¢°¢ µðÆúÆ® »ý¼ºÀÚ, v°ª n°³¸¦ °¡Áö´Â »ý¼ºÀÚ, º¹»ç »ý¼ºÀÚ, ±¸°£ º¹»ç »ý¼ºÀÚÀÌ´Ù. ¸®½ºÆ®´Â ½ÇÇàÁß¿¡ Å©±â¸¦ ¾ó¸¶µçÁö ´Ã¸± ¼ö ÀÖÀ¸¹Ç·Î Åë»ó ºó ¸®½ºÆ®·Î »ý¼ºÇÏ´Â µðÆúÆ® »ý¼ºÀÚ¸¦ »ç¿ëÇÑ´Ù. ¸®½ºÆ®¿¡ ¿ä¼Ò¸¦ »ðÀÔ, »èÁ¦ÇÒ ¶§ push(pop)_front(back) ÇÔ¼ö¸¦ »ç¿ëÇϴµ¥ ¾ç³¡¿¡¼­ ÀÚÀ¯·Ó°Ô ¿ä¼Ò¸¦ ÷»èÇÒ ¼ö ÀÖÀ¸¸ç ¸µÅ©¸¸ Á¶ÀÛÇÏ¸é µÇ¹Ç·Î ¼Óµµµµ ¾ÆÁÖ ºü¸£´Ù. ´ÙÀ½ ¿¹Á¦´Â Á¤¼öÇüÀÇ ºó ¸®½ºÆ®¸¦ ¸¸µé°í ¾Õ µÚ¿¡¼­ ¿ä¼ÒµéÀ» Ãß°¡ÇÑ´Ù.

 

¿¹ Á¦ : listcon

#include <iostream>

#include <list>

using namespace std;

 

void main()

{

     list<int> li;

     list<int>::iterator it;

 

     li.push_back(8);

     li.push_back(9);

     li.push_front(2);

     li.push_front(1);

 

     for (it=li.begin();it!=li.end();it++) {

          printf("%d\n",*it);

     }

}

 

¸®½ºÆ®´Â list Çì´õ ÆÄÀÏ¿¡ Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î ÀÌ Çì´õ ÆÄÀÏÀ» ¹Ýµå½Ã ÀÎŬ·çµåÇØ¾ß ÇÑ´Ù. ¹Ýº¹ÀÚ·Î ¸®½ºÆ®¸¦ óÀ½ºÎÅÍ ³¡±îÁö ¼øÈ¸Çϸ鼭 ¿ä¼Ò°ªÀ» Ãâ·ÂÇØ º¸¾Ò´Ù.

 

1

2

8

9

 

¹°·Ð Àß Ãâ·ÂµÈ´Ù. push_backÀ¸·Î Ãß°¡ÇÑ °ÍÀº µÚÂÊ¿¡ ºÙ°í push_front·Î ³ÖÀº °ÍÀº ¾ÕÂÊ¿¡ ºÙ´Â´Ù.