|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
Standard C++ Library(STL) ¹è¿öº¸±â
- ÀÛ¼ºÀÚ : Á¶ÀçÇõ (minzkn@infoeq.com)
Àμ⺸±â
- ÀÌ ±ÛÀº ÇÊÀÚÀÇ ¼Ò°ßÀÌ ´Ù¼Ò ÁÖ°üÀûÀ¸·Î µé¾î°¥¼ö ÀÖ½À´Ï´Ù. ¹Ý´ëÀǰßÀ̳ª ÁÁÀº ³»¿ë ÀÖÀ¸¸é ±Û ³²°ÜÁÖ¼¼¿ä.
- ±¹Á¦Ç¥Áرⱸ(International Standards Organization: ISO) ¿Í ¹Ì±¹±¹°¡Ç¥Áرâ°ü(American National Standards Institute: ANSI) ¿¡¼ C++ ¾ð¾î¿¡ ´ëÇÑ Ç¥ÁØÀ» ¸¶·ÃÇÏ´Â ³ë·ÂÀÌ ÀÖ¾úÀ¸¸ç ÀÌÁß¿¡ Çϳª°¡ ¹Ù·Î STLÀÔ´Ï´Ù. ¿©±â¼ ¸¶·ÃµÈ ¶óÀ̺귯¸®´Â ´ÙÀ½°ú °°Àº ¿ä¼Ò¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
- Ç¥ÁØÅÛÇø´¶óÀ̺귯¸® (Standard Template Library: STL) - À̰ÍÀº µ¥ÀÌÅÍ ±¸Á¶¿Í ±×¿¡ ´ëÇÑ ¾Ë·Î¸®ÁòÀ» ±¸ÇöÇÏ´Â °Í¿¡ ´ëÇÏ¿© Ưº°È÷ ¿ä¼Ò·Î ºÐ¸®µË´Ï´Ù.
- I/O stream (ÀÔ/Ãâ·Â È帧 ¿ä¼Ò)
- ±¹Á¦È °ü·Ã ¿ä¼Ò
- Memory °ü¸®¿ä¼Ò
- ¹®ÀÚ¿/º¹¼Ò¼ö/¼öÄ¡Á¦ÇÑ ÅÛÇø´ Ŭ·¡½º
- ¿¹¿Ü 󸮿¡ ´ëÇÑ Á¦¾î¿ä¼Ò
- ±× ¹Û¿¡ ... (ÇÊÀÚ´Â ´õÀÌ»ó ¹¹°¡ ÀÖ´ÂÁö Àß ¸ð¸§)
- STLÀº ±× ±¸Á¶ÀûÀÎ ¸ñÀûÀ» ¸¸Á·Çϱâ À§Çؼ º¹ÀâÇÑ °èÃþÀû ±¸Á¶¿Í »ó¼ÓÀÇ °³³äÀ» ÇÇÇϰí ÀÖ½À´Ï´Ù. À̰ÍÀº C++ÀÇ ÀåÁ¡À» »ì¸®±â º¸´Ù´Â ÃÖÀûÈ¿¡ ÁßÁ¡À» µÎ¾î ±¸¼ºµÈ °ÍÀ̹ǷΠ»ç¿ëÀÚ´Â ÀÌ Æ¯¼ºÀ» ÀûÀýÈ÷ º¸´Ù Æø ³Ð°Ô »ç¿ëÇÒ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. ¸¸¾à À̸¦ C++ÀÇ °´Ã¼ÁöÇ⼺ÀÇ ¸ðµç ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© ¸¸µç´Ù¸é »ç¿ë»ó °£ÆíÇÑ ºÎºÐÀº ÀÖÀ»Áö ¸ð¸£°ÚÀ¸³ª ¼Óµµ ¹× Å©±â ¸é¿¡¼ ¸¸Á·ÇÒ¼ö ¾ø´Â °á°ú°¡ ¹ß»ýÇÕ´Ï´Ù. Àû¾îµµ ÇÁ·ÐÆ®¿£µå¿¡¼´Â °´Ã¼ÁöÇâÀûÀÎ ¼³°è°¡ À¯¸®ÇÒÁö ¸ð¸£Áö¸¸ ¹é¿£µå¿¡¼´Â ÀÌ·¯ÇѰÍÀÌ ¿ÀÈ÷·Á ¼º´É¿¡ ¾Ç¿µÇâÀ» ¹ß»ýÇÒ¼ö ÀÖÀ»°Ì´Ï´Ù. ±× ¸¸Å H/WÀÇ »ç¾çÀ» ³ô¿©¾ß ÇÏ°í ±× ¸¸Å µå´Â ºñ¿ëÀûÀÎ ÁöÃâÀÌ Å©°Ô µÉ°ÍÀÌ »·ÇÕ´Ï´Ù.
- STLÀº Threadȯ°æ¿¡¼ ±²ÀåÈ÷ Á¶½É¼º ÀÖ°Ô »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. (Áï, STLÀº °æÀïÀû Á¶°Ç»ó¿¡ ³õÀÎ µ¥ÀÌÅ͸¦ º¸ÀåÇØÁÖÁö ¾Ê½À´Ï´Ù.) Á¦ ¾Æ¹«¸® Àß ¸¸µç´Ù°í ÇÏ¿©µµ Safe thread ÄÚµå´Â ±×¸¸Å °æÀïÁ¶°Ç¿¡ ´ëÇÑ Ã³¸®·Î ÀÎÇÏ¿© CPU¸¦ °ú¼ÒºñÇÏ°Ô µÉ¼ö¹Û¿¡ ¾ø½À´Ï´Ù. ¶§¹®¿¡ °³¹ßÀÚ´Â Æí¸®ÇÔÀ» °Á¶Çϱ⠺¸´Ù´Â ¼³°èÀûÀÎ ¿ä¼Ò¸¦ ÃæºÐÈ÷ °í·ÁÇÏ¿© À̸¦ ±Øº¹ÇØ¾ß ÇÕ´Ï´Ù.
- STLÀº Å©°Ô 3°¡Áö ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© °í·ÁµÇ´Âµ¥ µ¥ÀÌÅÍ Çü½Ä, µ¥ÀÌÅÍ Àü´Þ¹æ½Ä, ¾Ë°í¸®Áò ÀÌ ±×°ÍÀÔ´Ï´Ù. À̸¦ C++¿¡¼ Template ±â´ÉÀ» Àû±Ø Ȱ¿ëÇÏ¿© ¸¹Àº ÄÚµåºÐ·®À» ÁÙÀϼö ÀÖµµ·Ï µË´Ï´Ù. ¸ðµç °³¹ßÀÚ´Â ÀÌ·¯ÇÑ 3°¡ÁöÀÇ ¿ä¼Ò¸¦ ÃæºÐÈ÷ °£ÆÄÇÏ¿© ¼³°è¸¦ ÇØ¾ß ÇÏ¸ç ±×¿¡ µû¸£´Â ¼º°ú¸¦ Á÷Á¢ ´À²¸º¼¼ö ÀÖ°Ô µÉ°ÍÀÔ´Ï´Ù.
1.2 Áغñ ÇнÀ
1.2.1 ÅÛÇø´ (Template)
1.3.1 ¹Ýº¹ÀÚ (Iterator)
- ƯÁ¤ Æ÷ÀÎÅÍÀÇ OffsetÀ» Á¶ÀÛÇÏ´Â °ÍÀ¸·Î ptr, ptr + i, ptr[i], ptr->next µîÀÇ ±¸ÇöÀÌ ÀÌ¿¡ ¼ÓÇÕ´Ï´Ù. °¢ ¾Ë°í¸®Áò¿¡ µû¶ó¼ Àû´çÇÑ ¿ÀÆÛ·¹À̼ÇÀ¸·Î ±¸ÇöµÇ¸ç ¾î¶²°ÍÀ» ¼±ÅÃÇϴ°¡´Â STL±¸Á¶Àû Ư¼º°ú ÇÁ·Î±×·¡¸ÓÀÇ ¼±Åÿ¡ ´Þ·ÁÀÖ½À´Ï´Ù.
- ¹Ýº¹ÀÚÀÇ Á¾·ù·Î´Â ¾Æ·¡ÀÇ Ç¥¿Í °°ÀÌ 5°¡Áö°¡ Á¸ÀçÇÏÁö¸¸ »óÈ£ °èÃøÀûÀÎ ±¸ÇöÀÌ µÇ¾î ÀÖ½À´Ï´Ù. Áï, ¼ø¹æÇ⠹ݺ¹ÀÚ¸¦ ¿¹·Î µéÀÚ¸é ÀÔ·Â ¹Ýº¹ÀÚ¿Í Ãâ·Â ¹Ýº¹ÀÚ°¡ ¼ø¹æÇ⠹ݺ¹ÀÚ¿¡¼ »ç¿ëµÉ¼ö ÀÖ½À´Ï´Ù.
| Á¾·ù | Á¢±Ù¼Ó¼º | Á¢±Ù¹æÇâ | °èÃþÀû ¿ä¼Ò | °¡´ÉÇÑ ¿¬»êÀÚ |
| ÀÓÀÇÀÇ Á¢±Ù ¹Ýº¹ÀÚ | Àбâ/¾²±â | ƯÁ¤ À§Ä¡ Á¢±Ù | ¾ç¹æÇâ | =(*ptr), (*ptr)=, ->, [], ++, --, +, -, +=, -=, ==, !=, <, >, <=, >= |
| ¾ç¹æÇ⠹ݺ¹ÀÚ | Àбâ/¾²±â | ¼ø¹æÇâ/¿ª¹æÇâ | ¼ø¹æÇâ, ¿ª¹æÇâ | =(*ptr), (*ptr)=, ->, ++, --, ==, != |
| ¼ø¹æÇ⠹ݺ¹ÀÚ | Àбâ/¾²±â | ¼ø¹æÇâ | ÀÔ·Â, Ãâ·Â | =(*ptr), (*ptr)=, ->, ++, ==, != |
| ÀÔ·Â ¹Ýº¹ÀÚ | Àбâ | ¼ø¹æÇâ | | =(*ptr), ->, ++, ==, != |
| Ãâ·Â ¹Ýº¹ÀÚ | ¾²±â | ¼ø¹æÇâ | | (*ptr)=, ++ |
1.3.2 µ¥ÀÌÅÍ Àü´Þ¹æ½Ä (Container)
- µ¥ÀÌÅÍ Àü´Þ¹æ½ÄÀº ¸î°¡Áö°¡ Àִµ¥ ÀÌÁß¿¡¼ ÀÚ½ÅÀÇ ¼³°è¿¡ °¡Àå ÀûÇÕÇÑ °ÍÀ» ¼±ÅÃÇØ¾ß ÇÕ´Ï´Ù.
1.3.2.1 deque (Double ended queue)
- Key¸¦ »ç¿ëÇÏ¿© Á¢±ÙÇÏ¸ç »ðÀÔ°ú »èÁ¦°¡ ºü¸¨´Ï´Ù.
- Áߺ¹ °¡´ÉÇÑ Key¸¦ »ç¿ëÇÏ´Â mapÀÔ´Ï´Ù.
1.3.2.6 priority_queue
- °¡Àå Å« °ªÀ» °®´Â µ¥ÀÌÅÍ·ÎÀÇ Á¢±Ù°ú »èÁ¦°¡ ºü¸¨´Ï´Ù.
- »èÁ¦´Â ¾Õ¿¡¼, »ðÀÔÀº µÚ¿¡¼¸¸ °¡´ÉÇÑ FIFO¿Í À¯»çÇÑ ±¸Á¶ÀÔ´Ï´Ù.
- »ðÀÔ°ú »èÁ¦ ±×¸®°í °ªÀÇ ¿©ºÎ °Ë»ç°¡ ºü¸¨´Ï´Ù. À̰ÍÀº »ðÀԵǴ ¼ø¼°¡ Áß¿äÇÕ´Ï´Ù.
- FILO¿Í À¯»çÇÑ ±¸Á¶·Î ÇÑÂÊ¿¡¼¸¸ »ðÀÔ°ú »èÁ¦°¡ °¡´ÉÇÕ´Ï´Ù.
- ÀÓÀÇÀÇ À§Ä¡¿¡ Á¢±ÙÇÏ¸ç µÚ¿¡¼ »ðÀÔÀÌ ºü¸¨´Ï´Ù.
|
|