mzs´ÔÀÇ Standard C++ Library - STL - ¹è¿öº¸±â
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : ¹Ì´Ï»çÀÌÆ®>STL>mz_stl



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Standard C++ Library(STL) ¹è¿öº¸±â

Contents

1 Standard C++ Library(STL) ¹è¿öº¸±â
1.1 °³¿ä
1.1.1 STLÀ̶õ
1.2 Áغñ ÇнÀ
1.2.1 ÅÛÇø´ (Template)
1.3 ±¸Çö
1.3.1 ¹Ýº¹ÀÚ (Iterator)
1.3.1.1 ¹üÀ§ÁöÁ¤
1.3.1.2 ¹Ýº¹ÀÚÀÇ Á¾·ù
1.3.2 µ¥ÀÌÅÍ Àü´Þ¹æ½Ä (Container)
1.3.2.1 deque (Double ended queue)
1.3.2.2 list
1.3.2.3 map
1.3.2.4 multimap
1.3.2.5 multiset
1.3.2.6 priority_queue
1.3.2.7 queue
1.3.2.8 set
1.3.2.9 stack
1.3.2.10 vector
1.4 °ü·Ã ¹®¼­µé
1.5 ¸¶Áö¸·À¸·Î

1.1 °³¿ä

  • ÀÌ ±ÛÀº ÇÊÀÚÀÇ ¼Ò°ßÀÌ ´Ù¼Ò ÁÖ°üÀûÀ¸·Î µé¾î°¥¼ö ÀÖ½À´Ï´Ù. ¹Ý´ëÀǰßÀ̳ª ÁÁÀº ³»¿ë ÀÖÀ¸¸é ±Û ³²°ÜÁÖ¼¼¿ä.

    1.1.1 STLÀ̶õ

    1. ±¹Á¦Ç¥Áرⱸ(International Standards Organization: ISO) ¿Í ¹Ì±¹±¹°¡Ç¥Áرâ°ü(American National Standards Institute: ANSI) ¿¡¼­ C++ ¾ð¾î¿¡ ´ëÇÑ Ç¥ÁØÀ» ¸¶·ÃÇÏ´Â ³ë·ÂÀÌ ÀÖ¾úÀ¸¸ç ÀÌÁß¿¡ Çϳª°¡ ¹Ù·Î STLÀÔ´Ï´Ù. ¿©±â¼­ ¸¶·ÃµÈ ¶óÀ̺귯¸®´Â ´ÙÀ½°ú °°Àº ¿ä¼Ò¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
      • Ç¥ÁØÅÛÇø´¶óÀ̺귯¸® (Standard Template Library: STL) - À̰ÍÀº µ¥ÀÌÅÍ ±¸Á¶¿Í ±×¿¡ ´ëÇÑ ¾Ë·Î¸®ÁòÀ» ±¸ÇöÇÏ´Â °Í¿¡ ´ëÇÏ¿© Ưº°È÷ ¿ä¼Ò·Î ºÐ¸®µË´Ï´Ù.
      • I/O stream (ÀÔ/Ãâ·Â È帧 ¿ä¼Ò)
      • ±¹Á¦È­ °ü·Ã ¿ä¼Ò
      • Memory °ü¸®¿ä¼Ò
      • ¹®ÀÚ¿­/º¹¼Ò¼ö/¼öÄ¡Á¦ÇÑ ÅÛÇø´ Ŭ·¡½º
      • ¿¹¿Ü 󸮿¡ ´ëÇÑ Á¦¾î¿ä¼Ò
      • ±× ¹Û¿¡ ... (ÇÊÀÚ´Â ´õÀÌ»ó ¹¹°¡ ÀÖ´ÂÁö Àß ¸ð¸§)
    2. STLÀº ±× ±¸Á¶ÀûÀÎ ¸ñÀûÀ» ¸¸Á·Çϱâ À§Çؼ­ º¹ÀâÇÑ °èÃþÀû ±¸Á¶¿Í »ó¼ÓÀÇ °³³äÀ» ÇÇÇϰí ÀÖ½À´Ï´Ù. À̰ÍÀº C++ÀÇ ÀåÁ¡À» »ì¸®±â º¸´Ù´Â ÃÖÀûÈ­¿¡ ÁßÁ¡À» µÎ¾î ±¸¼ºµÈ °ÍÀ̹ǷΠ»ç¿ëÀÚ´Â ÀÌ Æ¯¼ºÀ» ÀûÀýÈ÷ º¸´Ù Æø ³Ð°Ô »ç¿ëÇÒ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. ¸¸¾à À̸¦ C++ÀÇ °´Ã¼ÁöÇ⼺ÀÇ ¸ðµç ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© ¸¸µç´Ù¸é »ç¿ë»ó °£ÆíÇÑ ºÎºÐÀº ÀÖÀ»Áö ¸ð¸£°ÚÀ¸³ª ¼Óµµ ¹× Å©±â ¸é¿¡¼­ ¸¸Á·ÇÒ¼ö ¾ø´Â °á°ú°¡ ¹ß»ýÇÕ´Ï´Ù. Àû¾îµµ ÇÁ·ÐÆ®¿£µå¿¡¼­´Â °´Ã¼ÁöÇâÀûÀÎ ¼³°è°¡ À¯¸®ÇÒÁö ¸ð¸£Áö¸¸ ¹é¿£µå¿¡¼­´Â ÀÌ·¯ÇѰÍÀÌ ¿ÀÈ÷·Á ¼º´É¿¡ ¾Ç¿µÇâÀ» ¹ß»ýÇÒ¼ö ÀÖÀ»°Ì´Ï´Ù. ±× ¸¸Å­ H/WÀÇ »ç¾çÀ» ³ô¿©¾ß ÇÏ°í ±× ¸¸Å­ µå´Â ºñ¿ëÀûÀÎ ÁöÃâÀÌ Å©°Ô µÉ°ÍÀÌ »·ÇÕ´Ï´Ù.
    3. STLÀº Threadȯ°æ¿¡¼­ ±²ÀåÈ÷ Á¶½É¼º ÀÖ°Ô »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. (Áï, STLÀº °æÀïÀû Á¶°Ç»ó¿¡ ³õÀÎ µ¥ÀÌÅ͸¦ º¸ÀåÇØÁÖÁö ¾Ê½À´Ï´Ù.) Á¦ ¾Æ¹«¸® Àß ¸¸µç´Ù°í ÇÏ¿©µµ Safe thread ÄÚµå´Â ±×¸¸Å­ °æÀïÁ¶°Ç¿¡ ´ëÇÑ Ã³¸®·Î ÀÎÇÏ¿© CPU¸¦ °ú¼ÒºñÇÏ°Ô µÉ¼ö¹Û¿¡ ¾ø½À´Ï´Ù. ¶§¹®¿¡ °³¹ßÀÚ´Â Æí¸®ÇÔÀ» °­Á¶Çϱ⠺¸´Ù´Â ¼³°èÀûÀÎ ¿ä¼Ò¸¦ ÃæºÐÈ÷ °í·ÁÇÏ¿© À̸¦ ±Øº¹ÇØ¾ß ÇÕ´Ï´Ù.
    4. STLÀº Å©°Ô 3°¡Áö ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© °í·ÁµÇ´Âµ¥ µ¥ÀÌÅÍ Çü½Ä, µ¥ÀÌÅÍ Àü´Þ¹æ½Ä, ¾Ë°í¸®Áò ÀÌ ±×°ÍÀÔ´Ï´Ù. À̸¦ C++¿¡¼­ Template ±â´ÉÀ» Àû±Ø Ȱ¿ëÇÏ¿© ¸¹Àº ÄÚµåºÐ·®À» ÁÙÀϼö ÀÖµµ·Ï µË´Ï´Ù. ¸ðµç °³¹ßÀÚ´Â ÀÌ·¯ÇÑ 3°¡ÁöÀÇ ¿ä¼Ò¸¦ ÃæºÐÈ÷ °£ÆÄÇÏ¿© ¼³°è¸¦ ÇØ¾ß ÇÏ¸ç ±×¿¡ µû¸£´Â ¼º°ú¸¦ Á÷Á¢ ´À²¸º¼¼ö ÀÖ°Ô µÉ°ÍÀÔ´Ï´Ù.

1.2 Áغñ ÇнÀ

1.2.1 ÅÛÇø´ (Template)

  • Template¿¡ ´ëÇÑ Áغñ ÇнÀÀ» À§ÇÑ ÀåÀÔ´Ï´Ù. Àúµµ Template´Â ±âº»ÀûÀÎ ³»¿ë¸¸ ¾Ë°í Àְŵç¿ä À̹øÂü¿¡ Á¦´ë·Î Çѹø :-) - yundream
  • Template´Â ÀÏÁ¾ÀÇ ¹Ýº¹µÇ´Â ±¸Á¶¸¦ °®Áö¸¸ µ¥ÀÌÅÍÀÇ Çü½ÄÀÌ ´Ù¸¥ °æ¿ì ¹Ýº¹ÀûÀÎ ÄÚµùÀ» ÇÇÇÏ°í º¸´Ù °£·«ÇÑ Ç¥ÇöÀ¸·Î ¿©·¯ Á¾·ùÀÇ Äڵ带 »ý¼ºÇÑ È¿°ú¸¦ ¾ò´Â°ÍÀ» ¸»ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹Á¦´Â 2°³ÀÇ °ªÀ» ¹Þ¾Æ¼­ Æò±ÕÀ» ±¸ÇÕ´Ï´Ù. Áß¿äÇѰÍÀº ÀÌ°Í Çϳª·Î char, int, float, double µî¿¡ ´ëÇÑ °³º°ÀûÀÎ Äڵ尡 ¾Æ·¡ÀÇ Template±¸Á¶·Î °£°áÇÏ°Ô Ç¥ÇöµÈ°ÍÀÔ´Ï´Ù.

    template <typename MyTemplate>
    MyTemplate Average( MyTemplate v1, MyTemplate v2 )
    {
     return( (MyTemplate)(v1 + v2) / (MyTemplate)2 );
    }
    

1.3 ±¸Çö

1.3.1 ¹Ýº¹ÀÚ (Iterator)

  • ƯÁ¤ Æ÷ÀÎÅÍÀÇ OffsetÀ» Á¶ÀÛÇÏ´Â °ÍÀ¸·Î ptr, ptr + i, ptr[i], ptr->next µîÀÇ ±¸ÇöÀÌ ÀÌ¿¡ ¼ÓÇÕ´Ï´Ù. °¢ ¾Ë°í¸®Áò¿¡ µû¶ó¼­ Àû´çÇÑ ¿ÀÆÛ·¹À̼ÇÀ¸·Î ±¸ÇöµÇ¸ç ¾î¶²°ÍÀ» ¼±ÅÃÇϴ°¡´Â STL±¸Á¶Àû Ư¼º°ú ÇÁ·Î±×·¡¸ÓÀÇ ¼±Åÿ¡ ´Þ·ÁÀÖ½À´Ï´Ù.

    1.3.1.1 ¹üÀ§ÁöÁ¤

    • ¾î¶² µ¥ÀÌÅÍÀÇ Ã³À½°ú ³¡À» °¡¸®Å°´Â °ÍÀ¸·Î µ¥ÀÌÅͰ¡ ¾îµðºÎÅÍ ¾îµð±îÁö ¸î°³°¡ ÀÖ´ÂÁö¸¦ À¯ÁöÇÒ¼ö ÀÖ´Â ¹üÀ§¸¦ ³ªÅ¸³»´Â °ÍÀÌ ÇÊ¿äÇÕ´Ï´Ù. º¸Åë 2Áß ¿¬°á ¸®½ºÆ®¿¡¼­ óÀ½°ú ³¡¿¡ NULLÀ» °®´Â°Í°ú °°ÀÌ À̸¦ x.begin() °ú x.end() ·Î ³ªÅ¸³»¸ç ¿©±â¼­ x.end()´Â ¸¶Áö¸· ¿ø¼Ò¸¦ °¡¸£Å°Áö ¾Ê´Â´Ù´Â Á¡¿¡¼­ ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù. x.end()´Â °¡Àå ¸¶Áö¸· µ¥ÀÌÅÍ ¿ø¼ÒÀÇ ´ÙÀ½À» ³ªÅ¸³»´Â NULLÀ» °®½À´Ï´Ù. »óȲ¿¡ µû¶ó¼­ °¢ ¿ø¼Ò°¡ NULLÀ» °¡¸£Å°´Â °æ¿ì°¡ Àִµ¥ ÇÁ·Î±×·¡¸Ó´Â ÀÌ¿¡ ÁÖÀÇÇØ¼­ °³¹ßÇÏ¿©¾ß ÇÕ´Ï´Ù. ¸¶Áö¸· ¿ø¼Ò¸¦ ¾òÀ¸·Á¸é x.rbegin()À» »ç¿ëÇÒ¼ö ÀÖÀ¸¸ç ¿ªÂüÁ¶µµ °¡´ÉÇÏ´Ù´Â °ÍÀÔ´Ï´Ù.
    • x.end()°¡ NULLÀ» °®´Â°ÍÀÌ À¯¿ëÇÑ ÀÌÀ¯´Â µ¥ÀÌÅͰ¡ ÀüÇô ¾ø´ÂÁö¸¦ ´ÙÀ½°ú °°ÀÌ ÇÒ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ Æí¸®ÇÑ ºÎºÐÀÌ º¸ÀÔ´Ï´Ù.

      if( x.begin() == x.end() ) /* µ¥ÀÌÅͰ¡ ºñ¾úÀ½. */
      
    • ¹üÀ§ÁöÁ¤ ¿ø¼Ò»çÀÌ¿¡ µ¥ÀÌÅÍ´Â ¸Þ¸ð¸®»ó¿¡ ¿¬¼ÓÀûÀ¸·Î ÀÖ´Ù´Â º¸ÀåÀ» ÇÒ¼ö ¾øÀ¸¸ç ´ÜÁö ³í¸®ÀûÀÎ ¿¬¼Ó¼ºÀ» °®´Â´Ù°í »ý°¢ÇÏ¸é ¸Â½À´Ï´Ù. ÀÌ·¯ÇÑ ³í¸®Àû ¿¬¼Ó¼ºÀº STLÀÌ Àß °ü¸®ÇØÁÖÁö¸¸ Ưº°È÷ ÇÁ·Î±×·¡¸ÓÀÇ ½Ç¼ö·Î Ư¼ºÀ» À߸ø »ç¿ëÇϸé ÇÁ·Î±×·¥Àº °ð Á״°ÍÀ» º¼¼ö ÀÖÀ»°Ì´Ï´Ù.
  • 1.3.1.2 ¹Ýº¹ÀÚÀÇ Á¾·ù

    • ¹Ýº¹ÀÚÀÇ Á¾·ù·Î´Â ¾Æ·¡ÀÇ Ç¥¿Í °°ÀÌ 5°¡Áö°¡ Á¸ÀçÇÏÁö¸¸ »óÈ£ °èÃøÀûÀÎ ±¸ÇöÀÌ µÇ¾î ÀÖ½À´Ï´Ù. Áï, ¼ø¹æÇ⠹ݺ¹ÀÚ¸¦ ¿¹·Î µéÀÚ¸é ÀÔ·Â ¹Ýº¹ÀÚ¿Í Ãâ·Â ¹Ýº¹ÀÚ°¡ ¼ø¹æÇ⠹ݺ¹ÀÚ¿¡¼­ »ç¿ëµÉ¼ö ÀÖ½À´Ï´Ù.
      Á¾·ù Á¢±Ù¼Ó¼º Á¢±Ù¹æÇâ °èÃþÀû ¿ä¼Ò °¡´ÉÇÑ ¿¬»êÀÚ
      ÀÓÀÇÀÇ Á¢±Ù ¹Ýº¹ÀÚ Àбâ/¾²±â ƯÁ¤ À§Ä¡ Á¢±Ù ¾ç¹æÇâ =(*ptr), (*ptr)=, ->, [], ++, --, +, -, +=, -=, ==, !=, <, >, <=, >=
      ¾ç¹æÇ⠹ݺ¹ÀÚ Àбâ/¾²±â ¼ø¹æÇâ/¿ª¹æÇâ ¼ø¹æÇâ, ¿ª¹æÇâ =(*ptr), (*ptr)=, ->, ++, --, ==, !=
      ¼ø¹æÇ⠹ݺ¹ÀÚ Àбâ/¾²±â ¼ø¹æÇâ ÀÔ·Â, Ãâ·Â =(*ptr), (*ptr)=, ->, ++, ==, !=
      ÀÔ·Â ¹Ýº¹ÀÚ Àб⠼ø¹æÇâ =(*ptr), ->, ++, ==, !=
      Ãâ·Â ¹Ýº¹ÀÚ ¾²±â ¼ø¹æÇâ (*ptr)=, ++

1.3.2 µ¥ÀÌÅÍ Àü´Þ¹æ½Ä (Container)

  • µ¥ÀÌÅÍ Àü´Þ¹æ½ÄÀº ¸î°¡Áö°¡ Àִµ¥ ÀÌÁß¿¡¼­ ÀÚ½ÅÀÇ ¼³°è¿¡ °¡Àå ÀûÇÕÇÑ °ÍÀ» ¼±ÅÃÇØ¾ß ÇÕ´Ï´Ù.

    1.3.2.1 deque (Double ended queue)

    • ¾Õ/µÚ ¾çÂÊ¿¡¼­ »ðÀÔ°ú »èÁ¦°¡ °¡´ÉÇϸç list, vectorÀÇ ¿ä¼Ò¸¦ ¸ðµÎ ³»Æ÷Çϰí ÀÖ½À´Ï´Ù.

      #include <deque>
      deque<int> stl_deque;
      int main(void)
      {
       return(0);
      }
      
  • 1.3.2.2 list

    • ÀÓÀÇÀÇ À§Ä¡¿¡ »ðÀÔ°ú »èÁ¦°¡ ºü¸¨´Ï´Ù.

      #include <list>
      list<int> stl_list;
      int main(void)
      {
       return(0);
      }
      

    1.3.2.3 map

    • Key¸¦ »ç¿ëÇÏ¿© Á¢±ÙÇÏ¸ç »ðÀÔ°ú »èÁ¦°¡ ºü¸¨´Ï´Ù.

    1.3.2.4 multimap

    • Áߺ¹ °¡´ÉÇÑ Key¸¦ »ç¿ëÇÏ´Â mapÀÔ´Ï´Ù.

    1.3.2.5 multiset

    • Áߺ¹ÀÌ °¡´ÉÇÑ setÀÔ´Ï´Ù.

    1.3.2.6 priority_queue

    • °¡Àå Å« °ªÀ» °®´Â µ¥ÀÌÅÍ·ÎÀÇ Á¢±Ù°ú »èÁ¦°¡ ºü¸¨´Ï´Ù.

    1.3.2.7 queue

    • »èÁ¦´Â ¾Õ¿¡¼­, »ðÀÔÀº µÚ¿¡¼­¸¸ °¡´ÉÇÑ FIFO¿Í À¯»çÇÑ ±¸Á¶ÀÔ´Ï´Ù.

    1.3.2.8 set

    • »ðÀÔ°ú »èÁ¦ ±×¸®°í °ªÀÇ ¿©ºÎ °Ë»ç°¡ ºü¸¨´Ï´Ù. À̰ÍÀº »ðÀԵǴ ¼ø¼­°¡ Áß¿äÇÕ´Ï´Ù.

    1.3.2.9 stack

    • FILO¿Í À¯»çÇÑ ±¸Á¶·Î ÇÑÂÊ¿¡¼­¸¸ »ðÀÔ°ú »èÁ¦°¡ °¡´ÉÇÕ´Ï´Ù.

    1.3.2.10 vector

    • ÀÓÀÇÀÇ À§Ä¡¿¡ Á¢±ÙÇÏ¸ç µÚ¿¡¼­ »ðÀÔÀÌ ºü¸¨´Ï´Ù.

1.4 °ü·Ã ¹®¼­µé

  1. [http]STL °³¿ä
  2. [http]Sequence Container
  3. [http]Association container
  4. [http]Iterator
  5. [http]¾Ë°í¸®Áò

1.5 ¸¶Áö¸·À¸·Î


EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.