ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
1절. ¼Ò°³±×µ¿¾È ÀÌ»çÀÌÆ®ÀÇ ¸î°³ ¹®¼¿¡¼ STL ¿¡ ´ëÇÑ ¾ð±ÞÀÌ ÀÖ¾úÁö¸¸, ¸Å¹ø ±×³É ÀÌ·±°ÍÀÌ ÀÖ´Ù.. ¶ó´Â Á¤µµ·Î ÇÏ°í ³Ñ¾î°¬¾ú´Ù. À̹ø¿¡´Â STL¿¡ ´ëÇÑ Á÷Á¢ÀûÀÎ ³»¿ëÀ» ´Ù·ç·Á°í ÇÑ´Ù. STL ¿¡ ´ëÇØ¼ Á¦´ë·Î ´Ù·ç±â À§Çؼ´Â C++ ¿¡ ´ëÇÑ ±âº»ÀûÀÎ ÀÌÇØ¿Í ÅÛÇø´ ¿¡ ´ëÇÑ ÀÌÇØ¸¦ ÇÊ¿ä·Î ÇÑ´Ù. (ÅÛÇø´, Ŭ·¡½º, ¿À¹ö·Îµù, ÇÔ¼öÆ÷ÀÎÅÍ µî¿¡ ´ëÇÑ ÀÌÇØ¸¦ ÇÊ¿ä·Î ÇÑ´Ù.) ±×¸®°í STL Àüü¸¦ Á¦´ë·Î ´Ù·ç·Á¸é »ó´çÈ÷ ¸¹Àº ½Ã°£À» ÅõÀÚÇØ¾ß ÇÑ´Ù. º¸Åë STL ÁÖÁ¦¸¸À¸·Îµµ Ã¥ ÇÑµÎ±Ç Á¤µµ´Â °£´ÜÇÏ°Ô ³ª¿Ã°ÍÀÌ´Ù(½ÇÁ¦·Î STLÀ» ÁÖÁ¦·ÎÇÑ ¸î±ÇÀÇ Ã¥ÀÌ ½ÃÁß¿¡ ³ª¿ÍÀÖ´Ù). ±×·¯¹Ç·Î STL ¿¡ ´ëÇÑ °Á´ ¸î¹øÀÇ ±â»ç¿¡ ³ª´©¾î¼ ÀÌ·ç¾îÁö°Ô µÉ°ÍÀÌ´Ù. À̹ø ±â»ç´Â STL ¿¡ ´ëÇÑ ¼Ò°³¿Í ÅÛÇø´ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ³»¿ëµéÀ» ´Ù·ç°Ô µÉ°ÍÀ̰í, ´ÙÀ½¹øÀÇ ±â»ç´Â "sequences ÄÁÅ×À̳Ê", "associative ÄÁÅ×À̳Ê", "Iterator", "¾Ë°í¸®Áò", "±×¹ÛÀÇ STL ¿¡ ´ëÇÑ ±â¼úÀûÀÎ ´Ù¸¥ ³»¿ëµé" ÀÌ µÉ°ÍÀÌ´Ù. ÀüüÀûÀ¸·Î 5-6ȸ¿¡ °ÉÃļ ¿¬Á¦¿¡ µé¾î°¡°Ô µÉ°ÍÀÌ´Ù. 2절. STL ¼Ò°³2.1절. STL À̶õ ¹«¾ùÀΰ¡STL Àº Standard Template Library ¶ó°í ºÒ¸®¿ì¸ç, C++ ¿¡¼ »ç¿ëÇÒ¼ö ÀÖ´Â ÄÁÅ×À̳Ê(container) class ¿Í, ¾Ë°í¸®Áò ÀϹÝÈ ½ÃÄѼ »ç¿ëÇÒ¼ö ÀÖ´Â ÀڷᱸÁ¶ µîÀ» Æ÷ÇÔÇÏ´Â ¶óÀ̺귯¸®ÀÇ ¸ðÀ½ÀÌ´Ù. STL Àº ÈçÈ÷ generic library(ÀϹÝÈµÈ ¶óÀ̺귯¸®) ¶ó°í ºÒ¸®¿ì¸ç, ÀÌ·¯ÇÑ ÀϹÝȸ¦ ±¸ÇöÇϱâ À§Çؼ C++ ¿¡¼ Á¦°øÇÏ´Â Template(ÅÛÇø´) À» »ç¿ëÇϰí ÀÖ´Ù. 2.1.1절. ¿Ö STL À» »ç¿ëÇϴ°¡Àü¿ëÀÇ ÇÔ¼ö ȤÀº Àü¿ëÀÇ ÀڷᱸÁ¶°¡ ¾Æ´Ñ ÀϹÝÀûÀ¸·Î »ç¿ë °¡´ÉÇÑ ÇÔ¼ö ȤÀº ÀڷᱸÁ¶¸¦ ¸¸µé±â À§ÇؼÀ̸ç, ÀÌ·¯ÇÑ ÀϹÝÀûÀÎ ÀڷᱸÁ¶¿¡ ÀϹÝÀûÀÎ ¾Ë°í¸®ÁòÀ» Àû¿ë½Ã۱â À§Çؼ ÀÌ´Ù. ¸»ÀÌ º¹ÀâÇѵ¥ °£´ÜÈ÷ ¸»Çؼ, ÇÁ·Î±×·¡¹Ö ½Ã°£À» ±ØÀûÀ¸·Î ´ÜÃà½Ã۰í ÄÚµå¼ö¸¦ ÁÙÀ̰í À¯Áöº¸¼ö ½±°í È®Àå ½¬¿î Äڵ带 ¸¸µé±â À§ÇؼÀÌ´Ù. ÇѸ¶µð·Î ÀλýÀ» ÆíÈ÷ Áñ±â±â À§Çؼ STL À» »ç¿ëÇÑ´Ù. ¿¹¸¦µé¾î ¿©·¯ºÐÀÌ queue ÀڷᱸÁ¶¸¦ ±¸ÇöÇÑ´Ù°í ÇØº¸ÀÚ. ¸Ó Àü»ê¼ö¾÷½Ã°£¿¡ Ãæ½ÇÈ÷ Çß´Ù¸é, ±×¸®°í ½ÃÁß¿¡ ³ª¿ÍÀÖ´Â ¸î°¡Áö Ã¥µéÀ» ¿½ÉÈ÷ ¼··ÆÇß´Ù¸é ¸¸µé¼ö´Â ÀÖ°ÚÁö¸¸, °³ÀÎÀûÀÎ »ý°¢Àε¥, ÃÖ¼ÒÇÑ ¼ö¹é¶óÀÎ ÀÌ»óÀÇ Äڵ带 ±×·Á³»¾î¾ß ÇÒ°ÍÀÌ´Ù. ÄÚµå¼ö°¡ ´Ã¾î³µÀ¸´Ï ±×¸¸Å ¹ö±×ÀϾ È®·üµµ ¸¹°í, À̰ÍÀú°Í Àâ´ÙÇÏ°Ô ½Å°æ½á¾ßÇÒ°Ô Çѵΰ³°¡ ¾Æ´Ò°ÍÀÌ´Ù. °Ô´Ù°¡ ´Ù¸¥ ÀڷᱸÁ¶¸¦ Áö¿øÇϵµ·Ï ÇØ¾ß ÇÑ´Ù¸é, ±×¶§ ¸¶´Ù °¢°¢ÀÇ ÀڷᱸÁ¶¸¦ À§ÇÑ »õ·Î¿î Àü¿ëÀÇ ÇÔ¼öµéÀ» »ý¼ºÇØ ³»¾ß¸¸ ÇÒ°ÍÀÌ´Ù. ¸ÅÅ©·Î¸¦ ÀÌ¿ëÇØ¼ ȤÀº Ŭ·¡½º¸¦ ÀÌ¿ëÇØ¼ ¾î´ÀÁ¤µµ Èä³»³»±â´Â °¡´ÉÇϰÚÁö¸¸, ÀÌ°Ç ¾îµð±îÁö³ª Èä³»ÀÏ »ÓÀÌ´Ù. ÀÌ°É STL ¿¡¼ Á¦°øÇÏ´Â deque ¸¦ ÀÌ¿ëÇϸé 10ÁÙ ³»¿Ü·Î ÀÛ¼º °¡´ÉÇÏ´Ù. Å©±â°¡ ¾ó¸¶³ª µÇ¾î¾ß ÇÒÁö °ÆÁ¤ÇÒ Çʿ䵵 ¾ø°í, ¸Þ¸ð¸® »¶³ªÁö ¾ÊÀ»Áö, queue ¸¦ ¾î¶»°Ô ±¸¼ºÇØ¾ß ÇÒÁö¿¡ ´ëÇØ¼ °í¹ÎÇÒ ÇÊ¿ä ¾øÀÌ ±×³É ¼±¾ðÇØ¼ »ç¿ëÇÏ¸é µÈ´Ù. °Ô´Ù°¡ Ç¥ÁØÀÌ´Ù. Linux ¿¡¼ ÀÛ¼ºÇѰб״ë·Î ¼Ö¶ó¸®½º¿¡¼ ÄÄÆÄÀϸ¸ Çϸé Á¦´ë·Î ÀÛµ¿ÇÑ´Ù. Windows ¿¡¼µµ ¸¶Âù°¡ÁöÀÌ´Ù(À©µµ¿ìÀÇ °æ¿ì STL ¶óÀ̺귯¸®¸¦ º°µµ·Î ¼³Ä¡ÇØ¾ß Çϴ°ɷΠ¾Ë°í ÀÖ´Ù). ¿¹Á¦ : queue.cc
À§ÀÇ queue °°Àº °æ¿ì´Â STL À» »ç¿ëÇÏÁö ¾Ê´õ¶óµµ ±×¸¶³ª ±¸ÇöÀÌ ¿ëÀÌÇÏ´Ù. ±×·¸Áö¸¸ map(À妽º°¡ int ÇüÀÌ ¾Æ´Ñ ½ºÆ®¸µ°°Àº) °°Àº°É±¸ÇöÇÏ·Á°í ÇÑ´Ù¸é À̰Šº¸ÅëÀÏÀÌ ¾Æ´Ò°ÍÀÌ´Ù. À̰Ϳª½Ã STL À» ÀÌ¿ëÇÏ¸é ¼±¾ðÀ¸·Î ³¡ÀÌ´Ù. °á·ÐÀûÀ¸·Î ¸»Çؼ STLÀ» »ç¿ëÇÏ¸é ±×·¸Áö ¾ÊÀ»¶§ º¸´Ù 50% ÀÌ»óÀÇ ½Ã°£Àý¾àÀÌ °¡´ÉÇÏ´Ù. °Ô´Ù°¡ ¾Æµå·¹³¯¸°ÀÇ »ý¼ºµµ ȹ±âÀûÀ¸·Î ÁÙ¿©ÁØ´Ù. ƯÈ÷ µ¥ÀÌŸ ÀúÀå°ú ÀڷᱸÁ¶¸¦ À§ÇÑ container ÀÇ Á¦ÀÛ°ú »ç¿ë¿¡ ÀÖ¾î¼ È¹±âÀûÀÎ ¹æ¹ýÀ» Á¦°øÇØ ÁØ´Ù. 2.1.2절. STL Àº ¾î¶»°Ô ±¸ÇöµÇ¾ú´Â°¡STL Àº Ŭ·¡½º¸¦ ÅëÇØ¼ ÀÌ·ç¾îÁø°Ô ¾Æ´Ï´Ù (STL ÅÛÇø´ µéµµ Ŭ·¡½º·Î ¸¸µé¾î Á³´Ù. ¿©±â¿¡¼ ¸»ÇÏ´Â °ÍÀº ¸ðµç ±â´ÉÀÇ ±¸ÇöÀ» À§Çؼ Ŭ·¡½º¸¸À» ÀüÀûÀ¸·Î »ç¿ëÇÑ°Ô ¾Æ´Ï¶õ ¶æÀÌ´Ù. STL¿¡¼ Ŭ·¡½º´Â °ÅÀÇ ¸Þ¼µå¿Í ÀÚ·áÇüÀ» ÇÔ²² µÎ±â À§ÇÑ ±¸Á¶Ã¼ ¼öÁØ¿¡¼ »ç¿ëµÈ´Ù.). C++ ¿¡¼ Á¦°øÇÏ´Â Template ¸¦ ÀÌ¿ëÇØ¼ ÀÌ·ç¾îÁ³´Ù. ÀÌ template ¿¡ ´ëÇØ¼´Â µû·Î ÀåÀ» ÇÒ´çÇØ¼ ¼³¸íÇÒ°ÍÀÌ´Ù. 2.1.3절. STLÀÇ Àå´ÜÁ¡¸ðµç°Ô ±×·¸Áö¸¸ STL ¿ª½Ã ÀåÁ¡°ú ´õºÒ¾î ¸î°¡ÁöÀÇ ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù. 2.1.3.1절. ÀåÁ¡ÀåÁ¡À¸·Î´Â ¿ì½¼ ¼Ò½ºÅ©±âÀÇ Ãà¼Ò¸¦ µé¼ö ÀÖ´Ù. ÀÌ¹Ì STL¿¡´Â ÀÚÁÖ »ç¿ëµÇ´Â 50¿©°³ Á¤µµÀÇ ¾Ë°í¸®Áò°ú ´Ù¾çÇÑ µ¥ÀÌŸ ±¸Á¶µéÀ» °¡Áö°í ÀÖ´Ù. ¿ì¸®´Â ÀÌ·¯ÇÑ STL¿¡¼ »ç¿ëÇÏ´Â ÀڷᱸÁ¶¿Í ¾Ë°í¸®ÁòÀ» ÀÌ¿ëÇØ¼ ½î½º ÄÚµåÀÇ Å©±â¸¦ ȹ±âÀûÀ¸·Î ÁÙÀϼö ÀÖ´Ù. STL ¾Ë°í¸®Áò°ú ÄÁÅ×À̳ʵéÀº ±âÁ¸ÀÇ C/C++ ÀÇ Æ÷ÀÎÅÍ¿Í ¹è¿¿¡µµ »ç¿ëÇÒ¼ö ÀÖÀ¸¸ç, º¯È¯ °¡´ÉÇϹǷΠÀ¯¿¬ÇÏ°Ô »ç¿ë°¡´ÉÇÏ´Ù. ±×¸®°í ÄÁÅ×ÀÌ³Ê¿Í ¾Ë°í¸®ÁòÀÌ ¼·Î ºÐ¸®µÇ¾î ÀÖÀ½À¸·Î(¸¹Àº°æ¿ì), ÀÚ½ÅÀÌ ¾Ë°í¸®ÁòÀ» ¸¸µé¾î¼ ÄÁÅ×À̳ʿ¡ Àû¿ë½ÃŰ´Â ÀÛ¾÷ÀÌ °¡´ÉÇÏ´Ù. ´ëºÎºÐÀÇ ¾Ë°í¸®Áò°ú ÀڷᱸÁ¶µéÀº ÃæºÐÈ÷ Å×½ºÆ®µÇ°í ÃÖÀûÈ µÇ¾î ÀÖ´Ù. ¶ÇÇÑ È¿À²ÀûÀÎ ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ ´Ù¾çÇÑ Á¢±Ù ¹æ¹ýÀ» Á¦°øÇϹǷÎ, C++ À» »ç¿ëÇÑ STL ÀÌ ´À¸±°ÍÀ̶ó´Â ¿¹»óÀ» ±ú°í ¾à°£¸¸ ½Å°æÀ» ¾´´Ù¸é ¸Å¿ì È¿À²ÀûÀÎ Äڵ带 »ý¼ºÇÒ¼ö ÀÖ´Ù. 2.1.3.2절. ´ÜÁ¡¿ì¼± µð¹ö±ëÀÌ ¾î·Æ´Ù. STLÀ» À߸ø»ç¿ëÇÒ°æ¿ì ¹ß»ýµÇ´Â ÄÄÆÄÀϽÃÀÇ ¿¡·¯ÄÚµå´Â ÅÛÇø´ ±í¼÷ÀÌ¿¡ ÀÖ´Â ³»ºÎÇÔ¼öµéÀÇ ¿¡·¯µéÀ» Ãâ·Â½ÃŲ´Ù. ÀÌ·¯ÇÑ ¿¡·¯°¡ ¹ß»ýÇϸé ÀÏ´Ü ¿¡·¯¸Þ½ÃÁöÀÇ ¾çµéµµ ¸¹À» »Ó´õ·¯, ÀÌÇØÀÚü°¡ ¾î·Á¿î ¸Þ½ÃÁöµéÀÌ´Ù. ÀÌ°É ÇØ°áÇÏ´Â ¹æ¹ýÀº Çϳª»ÓÀÌ´Ù. STL ¿¡ Àͼ÷ÇØÁö±â.. STLÀÌ À¯¿¬¼ºÀ» ±¸ÇöÇϱâ À§ÇÑ ÅÛÇø´ÀÇ °æ¿ì ÇÁ·Î±×·¥ÀÇ Å©±â¸¦ ¸Å¿ì Å©°Ô ¸¸µé¼ö ÀÖ´Ù. ¾ÆÁ÷Àº ÄÄÆÄÀÏ·¯°¡ ÅÛÇø´À» ±×¸® È¿À²ÀûÀ¸·Î ó¸®ÇÏÁö ¸øÇϱ⠶§¹®ÀÌ´Ù. ¿ª½Ã ºñ¿ëÀ» Àß °í·ÁÇÏ¿©¼ È¿À²ÀûÀ¸·Î STLÀÇ ¾Ë°í¸®Áò°ú ÄÁÅ×À̳ʵéÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ¹Ýº¹ÀÚ(³ªÁß¿¡ ´Ù·ê°ÍÀÓ, ÀÏÁ¾ÀÇ Æ÷ÀÎÅÍ)¿Í ÄÁÅ×À̳ʰ¡ ºÐ¸®µÇ¾î¼ Á¸ÀçÇÑ´Ù. ÀÌ´Â ¾²·¹µå ÇÁ·Î±×·¡¹Ö½Ã ¹®Á¦¸¦ ¹ß»ýÇÒ ¼ÒÁö¸¦ °¡Áö°íÀÖ´Ù. 3절. Template»ç½Ç ÅÛÇø´µµ ±×¸® ¸¸¸¸ÇÑ ³»¿ëÀÌ ¾Æ´Ï´Ù. Á»µÎ²¨¿î C++ Ã¥°°Àº °æ¿ì ¿Ø¸¸ÇÑ ¾ãÀº Ã¥ ÇÑ±Ç ºÐ·® Á¤µµ¸¦ ÇÒ¾ÖÇØ¼ ÅÛÇø´À» ¼³¸íÇÑ´Ù. ÀÌ ¹®¼´Â ÅÛÇø´ ÀÚü¸¦ ¼³¸íÇÏ´Â ¹®¼´Â ¾Æ´Ï¹Ç·Î ±×·¸°Ô ÀÚ¼¼È÷ ¼³¸íÇÏÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. ´Ù¸¸ STLÀ» Á»´õ ½±°Ô ÀÌÇØÇϵµ·Ï µ½´Â ¼öÁØ¿¡¼¸¸ ¼³¸íÀ» ÇÒ°ÍÀÌ´Ù. ÅÛÇø´¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´Ù¸¥ ¹®¼³ª, Ã¥À» ÀÌ¿ëÇϵµ·Ï ÇÏÀÚ. (ºñ·Ï C ¿Í C++ À» ´Ù¸¥ ¾ð¾î¶ó°í ¸»À» Çϱä ÇÏÁö¸¸) C ¿¡ ºñÇØ¼ C++ ¿¡¼ Å©°Ô Ãß°¡µÈ °ÍÀÌ ÀÖ´Ù¸é ¹Ù·Î "Ŭ·¡½º" ¿Í "ÅÛÇø´" Á¤µµ°¡ µÉ°ÍÀÌ´Ù. 3.1절. Template ¿¡ ´ëÇØ¼¸¸¾à¿¡ ¿ì¸®°¡ int ÇüÀÇ ¼ýÀÚ¸¦ ¹Þ¾ÆµéÀÌ´Â A ¶ó´Â ÇÔ¼ö¸¦ ¸¸µé¾ú´Ù°í °¡Á¤À» ÇÏÀÚ. ÀÌ A ¶ó´Â ÇÔ¼ö´Â int ¾Æ±Ô¸ÕÆ®¸¦ ¹Þ¾ÆµéÀÏ °æ¿ì´Â ¹®Á¦°¡ ¾øÁö¸¸, ÀÌ A ¶ó´Â ÇÔ¼ö´Â ´ÜÁö int Çü¸¸À» ó¸®ÇÒ¼ö ÀÖ´Ù´Â ¹®Á¦Á¡À» °¡Áö°Ô µÈ´Ù. float, double µîÀÌ ÀÎÀÚ·Î µé¾î¿À°Ô µÇ¸é Á¦´ë·Î 󸮸¦ ÇÒ¼ö ¾øÀ»°ÍÀÌ´Ù. ÀÌ·²°æ¿ì ¾î¿¼ö ¾øÀÌ Àü¿ëÀÇ »õ·Î¿î ÇÔ¼ö¸¦ ¸¸µé¾î¾ß¸¸ ÇÒ°ÍÀÌ´Ù. ¹°·Ð C++ ÀÇ Æ¯¼ºÁß ÇϳªÀÎ ¸â¹öÇÔ¼öÀÇ ¿À¹ö·ÎµùÀ» ÀÌ¿ëÇÏ¸é ¾î´ÀÁ¤µµÀÇ ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù. ±×·¯³ª ¸¸¾à struct ³ª, string, class µîÀ» ó¸®ÇÏ´Â ÇÔ¼ö¸¦ ¸¸µé¾î¾ß ÇÑ´Ù¸é? ÀÌÂë µÇ¸é ÇÔ¼ö ¿À¹ö·Îµù Á¤µµ·Î ±×¸® °£´ÜÇÏ°Ô ÇØ°áµÉ ¹®Á¦°¡ ¾Æ´Ï´Ù(ÇÁ·Î±×·¡¹Ö¿¡¼ ´ëºÎºÐÀÇ °ÍµéÀÌ ±×·¸µíÀÌ ¹°·Ð ºÒ°¡´ÉÇÑ°Ç ¾Æ´Ï´Ù. ÇÏÁö¸¸ ³Ê¹« ¸¹Àº ºñ¿ëÀ̵ç´Ù. ³Ê¹« ¸¹Àº ½Ã°£, ³Ê¹« ¸¹Àº ³ë·ÂÀ» ÇÊ¿ä·Î ÇÑ´Ù) ¾î¶µç Template ÀÌ ¾Æ±Ô¸ÕÆ®·Î ÁÖ¾îÁö´Â Çü¿¡ °ü°è¾øÀÌ ¹Þ¾ÆµéÀϼö ÀÖ´Ù´Â °Í ¶§¹®¿¡, ƯÈ÷ µ¥ÀÌŸ ÀúÀå¼Ò(container)·Î À¯¿ëÇÏ°Ô ¾²ÀδÙ. STL ¿ª½Ã Template ÀÇ ÀÌ·± Ư¼ºÀ» ÀÌ¿ëÇØ¼ ¹ü¿ëÀûÀ¸·Î »ç¿ë°¡´ÉÇÑ ÀúÀå¼Ò¸¦ Á¦°øÇÑ´Ù(vector, map, list, queue µîµî..) STL ¿¡¼´Â º¸Åë ÀÌ·¯ÇÑ ÀúÀå¼Ò¸¦ ¸¸µé±â À§Çؼ class template ¸¦ ÀÌ¿ëÇÏ¸ç ¾Ë°í¸®ÁòÀ» À§Çؼ ÇÔ¼ö template ¸¦ ÀÌ¿ëÇÑ´Ù. ÀúÀå¼Ò¸¦ À§Çؼ class template ¸¦ ÀÌ¿ëÇÏ´Â ÀÌÀ¯´Â class °¡ µ¥ÀÌŸºÎºÐ°ú ¸Þ½áµå ºÎºÐÀ» ºÐ¸®ÇÒ¼ö ÀÖÀ½À¸·Î ¾Æ¹«·¡µµ µ¥ÀÌŸ¸¦ ÀúÀåÇϱⰡ ¹æ¹ý»ó ´õ °£´ÜÇϱ⠶§¹®ÀÌ´Ù. ¾Ë°í¸®ÁòÀ» ÀÌ¿ëÇØ¼ ÇÔ¼ö template ¸¦ ÀÌ¿ëÇÏ´Â ÀÌÀ¯´Â template ÀÇ Æ¯¼ºÀ» ÀÌ¿ëÇØ¼ ÀÎÀÚ¿¡ °ü°è¾øÀÌ ¹ü¿ëÀûÀ¸·Î »ç¿ë°¡´ÉÇÑ ¾Ë°í¸®ÁòÀ» ¸¸µé¼ö Àֱ⠶§¹®ÀÌ´Ù. 3.2절. ÅÛÇø´ ÀÛ¼º3.2.1절. ÇÔ¼ö ÅÛÇø´ÀÛ¼º¹æ¹ýÀº °£´ÜÇÏ´Ù. C++ ¿¡¼´Â ÅÛÇø´ÀÇ Á¦ÀÛÀ» À§Çؼ "template" ¶ó´Â Ű¿öµå¸¦ Á¦°øÇØÁØ´Ù. ¿¹Á¦ : myadd_template.cc
±×¸®°í À§ÀÇ ¿¹Á¦´Â ¶Ç´Ù¸¥ ¹®Á¦¸¦ °¡Áö°í ÀÖ´Ù typename T °¡ ¼·Î °°Àº Á¾·ùÀÇ ÇüÀ» °¡Á®¾ß µÈ´Ù´Â °ÍÀÌ´Ù. (int, int), (float, float), (string, string) µîÀ» »ç¿ëÇϴµ¥ À־ ¹®Á¦°¡ ¾øÁö¸¸ (int, float) ¿Í °°ÀÌ ¼·Î ´Ù¸¥ ÇüÀ» »ç¿ëÇÒ¶§´Â ¹®Á¦°¡ ¹ß»ýÇÒ°ÍÀÌ´Ù. ¿Ü³ÄÇϸé typename T ¿¡ ´ëÇØ¼ ÀÌ·¯ÇÑ ¾Æ±Ô¸ÕÆ®´Â Áö¿øÀÌ µÇÁö ¾Ê±â ¶§¹®¿¡, À§ÀÇ ¾Æ±Ô¸ÕÆ®¸¦ ó¸®ÇÒ¼ö ÀÖ´Â ¾î¶°ÇÑ ÇÔ¼ö¿øÇüµµ ¹ß°ßÇÒ¼ö ¾ø´Ù´Â ¿À·ù ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϸç ÄÄÆÄÀÏ ¿¡·¯°¡ ¹ß»ýÇÒ°ÍÀÌ´Ù. ÀÌ·²°æ¿ì¿¡´Â ¿¬»êÀÚ ¿À¹ö·ÎµùÀ» ÅëÇÏ¿© ÇØ°á °¡´ÉÇÏ´Ù. ´ÙÀ½°ú °°Àº ¿¬»êÀÚ '+' ¿¡ ´ëÇØ¼ Á¤ÀǸ¦ ÇØµÎ¸é µÈ´Ù.
3.2.2절. Ŭ·¡½º ÅÛÇø´Å¬·¡½º ÅÛÇø´ÀÇ »ç¿ë¿ª½Ã ¸Å¿ì °£´ÜÇÏ´Ù. ¾Æ·¡´Â ¹Ù·Î À Àý¿¡¼ »ç¿ëµÇ¾ú´ø ¿¹Á¦¸¦ ¿¬»êÀÚ ¿À¹ö·Îµù ±îÁö Æ÷ÇÔ½ÃÄѼ, double, long ¿¬»ê±îÁö °¡´ÉÇϵµ·Ï ¾à°£ ¼öÁ¤ÇÑ °ÍÀÌ´Ù. ¿¹Á¦ : class_tem.cc
ÇÏÁö¸¸ Ŭ·¡½º ÅÛÇø´ÀÇ ÁøÁ¤ÇÑ »ç¿ë¿ëµµ´Â µ¥ÀÌŸ ÀúÀå¼Ò(container)¸¦ ¸¸µé±â À§ÇÑ ¿ëµµÀÌ´Ù. ¸¸¾à queue Çü½ÄÀ» Áö¿øÇÏ´Â µ¥ÀÌŸ ÀúÀå¼Ò¸¦ ¸¸µé°í Áö¿øÇؾßÇÒ µ¥ÀÌŸ ÇüÀÇ Á¾·ù°¡ ¿©·¯°¡Áö¶ó¸é, ¿ì¸®´Â µ¥ÀÌŸ ÇüÀÇ Á¾·ùÀÇ ¼ö¸¸ÅÀÇ ÇÔ¼öȤÀº Ŭ·¡½º¸¦ ¸¸µé¾î¾ß ÇÒ°ÍÀÌ´Ù. ÇÏÁö¸¸ Ŭ·¡½º ÅÛÇø´À» »ç¿ëÇϸé ÀÌ·¯ÇÑ ¼ö°í¸¦ ´ú¼ö ÀÖ´Ù. ÅÛÇø´À» ÀÌ¿ëÇÑ container ÀÇ Á¦ÀÛÀ» À§Çؼ ´Ù¾çÇÑ µ¥ÀÌÅÍÇüÀ» ÀúÀåÇÒ¼ö ÀÖ´Â arrary µ¥ÀÌŸ ±¸Á¶¸¦ °¡Áö´Â ¾î¶² ÀúÀå¼Ò¸¦ ¸¸µé¾î º¸µµ·Ï ÇϰڴÙ. ¿ì¸®´Â Ŭ·¡½º ÅÛÇø´ ¸¦ ÀÌ¿ëÇØ¼ circular buffer ±¸Á¶¸¦ °¡Áö´Â queue ÀڷᱸÁ¶¸¦ ±¸ÇöÇÒ°ÍÀÌ´Ù. circular buffer ´Â ¹è¿À» ÀÌ¿ëÇÑ buffer ·Î ´ÙÀ½°ú °°Àº ±¸Á¶¸¦ °¡Áø´Ù.
À̹ø¿¹Á¦´Â (¹öÆÛ¿¡)ÀбâÀü¿ë ¾²·¹µå¿Í ¾²±âÀü¿ë ¾²·¹µå·Î ±¸¼ºµÈ ÇÁ·Î±×·¥À» ¸¸µé°ÍÀÌ´Ù. ±×¸®°í Àбâ/¾²±â µ¿±âȸ¦ À§Çؼ ¹ÂÅØ½º¿Í Á¶°Çº¯¼ö¸¦ »ç¿ëÇÏ°Ô µÉ°ÍÀÌ´Ù. ¾²·¹µå¿Í ¹ÂÅØ½º Á¶°Çº¯¼ö¿¡ °ü·ÃµÈ ³»¿ëÀ» ÀÌ»çÀÌÆ®ÀÇ ´Ù¸¥ ¹®¼µéÀ» Âü°íÇϱ⠹ٶõ´Ù. ÀÌ ÇÁ·Î±×·¥Àº 2°³ÀÇ ÆÄÀÏ·Î ÀÌ·ç¾îÁú°ÍÀÌ´Ù. Çϳª´Â container Á¦ÀÛÀ» À§ÇÑ ÅÛÇø´ Ŭ·¡½º¸¦ °¡Áö´Â buff.h ´Ù¸¥ Çϳª´Â main ÇÔ¼ö¸¦ Æ÷ÇÔÇÏ´Â main.cc ÀÌ´Ù. ¿¹Á¦ : buff.h
¿¹Á¦ : main.cc
ÄÄÆÄÀÏ ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.
À§ÀÇ ¿¹Á¦´Â ¸éÁ¢¿¹Á¦ÀÌ´Ù. ¸éÁ¢À» º¸±â À§Çؼ ÇǸéÁ¢ÀÚ´Â ´ë±â½Ç¿¡¼ ±â´Ù¸®°í ÀÖ¾î¾ß ÇÑ´Ù. ´ë±â½ÇÀÇ Á¤¿øÀº 10¸íÀ̹ǷΠ10¸íÀÌ»óÀÌ µé¾î¿ÀÁö ¸øÇÏ°Ô ´ë±â½Ç¹Û¿¡¼ °ü¸®¸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù. ÇÑ»ç¶÷ÀÌ ¸éÁ¢º¸´Âµ¥ °É¸®´Â ½Ã°£Àº 3ÃÊÀÎ ¹Ý¸é ¸éÁ¢º¸·¯ ¿À´Â »ç¶÷Àº 0-5ÃÊ °£°ÝÀ¸·Î ·£´ýÇÏ°Ô µµÂøÇÑ´Ù. ±×·¯¹Ç·Î ´ë±â½Ç°ü¸®¸¦ ÇØÁÖÁö ¾ÊÀ¸¸é ¾ðÁ¨°¡´Â ´ë±â½ÇÀÌ ²ËÂ÷¹ö¸± °ÍÀÌ´Ù. ±×°É ¸·±â À§Çؼ »ç¶÷À» ¹Þ¾ÆµéÀ϶§ ¸¶´Ù. ´ë±â½ÇÀÇ Å©±â¸¦ Á¶»çÇØ¼ ²Ëá´Ù¸é 15ÃÊ µ¿¾ÈÀº ¹«Á¶°Ç ÁøÀÔ½ÃŰÁö ¾Êµµ·Ï Çß´Ù. ¹Ù»Û ´ë±â¸¦ ¸·±â À§Çؼ size °¡ 0Àϰæ¿ì¿¡´Â Á¶°Çº¯¼ö·Î signal ÀÌ Àü´ÞµÉ¶§±îÁö ±â´Ù¸°´Ù. À§ÀÇ ¿¹Á¦´Â circular buffer ¸¦ ÀÌ¿ëÇÑ queue¸¦ ÀÌ¿ëÇØ¼ ±¸ÇöÇß´Ù. Áö±ÝÀº ¸éÁ¢ÀÚÀÇ Á¤º¸¸¦ À§Çؼ ±¸Á¶Ã¼¸¦ »ç¿ëÇϰí ÀÖÁö¸¸ ¿©·¯ºÐÀÌ ¸¶À½¸¸ ¸Ô´Â´Ù¸é int Çü, Ŭ·¡½º, char *Çü À» °£´ÜÈ÷ ¼±¾ð¸¸ ÇÔÀ¸·Î½á »ç¿ëÇÒ¼ö ÀÖ´Ù. À§ÀÇ ¿¹Á¦´Â queue °¡ ²ËÂ÷¸é ¹«Á¶°Ç 12Ãʸ¦ ±â´Ù¸®°Ô µÇ¾î Àִµ¥, ÀÌ¿ÕÀ̸é queue °¡ ºñ´Â Áï½Ã ´ÙÀ½ µ¥ÀÌŸ¸¦ ¹Þ¾ÆµéÀ̵µ·Ï ÇÏ´Â°Ô Á»´õ È¿À²ÀûÀÏ °ÍÀÌ´Ù. À̰ÍÀº ¿ª½Ã Á¶°Çº¯¼ö¸¦ ÀÌ¿ëÇÏ¸é °¡´ÉÇÏ´Ù. À̰ÍÀº °£´ÜÇÏ´Ï °¢ÀÚ ±¸ÇöÇØº¸µµ·Ï ÇÑ´Ù. ±×¸®°í ¹è¿ÀÇ Å©±â¸¦ 10À¸·Î °íÁ¤½ÃÄÑ ³ù´Âµ¥, ÀÌ¿ÕÀ̸é new ³ª malloc À¸·Î ÇÒ´çÇÒ¼ö ÀÖµµ·Ï ¸¸µå´Â°Ô ÁÁÀ»°ÍÀÌ´Ù. ½Ã°£ÀÌ ³²À¸¸é ÃÑ ¸éÁ¢ÀÚ¸¦ ÁöÁ¤ÇÏ°í ¸ðµç ¸éÁ¢ÀÚ¿¡ ´ëÇÑ ¸éÁ¢ÀÌ ³¡³ª¸é Á¾·áÇϵµ·Ï ¼öÁ¤ÇØ º¸µµ·Ï ÇÏÀÚ. ÀÌó·³ Ŭ·¡½º ÅÛÇø´ À» »ç¿ëÇÏ¸é ´Ù¾çÇÑ µ¥ÀÌŸÇüÀ» ÀúÀåÇÒ¼ö ÀÖ´Â container ¸¦ ¼Õ½±°Ô ÀÛ¼ºÇÒ¼ö ÀÖ´Ù. ¿©±â¿¡¼´Â container ¸¦ ÀÛ¼ºÇϱâ À§Çؼ ¹è¿(array)¸¦ »ç¿ëÇϰí Àִµ¥, STL¿¡¼ Á÷Á¢ Á¦°øÇÏ´Â vector, deque °°Àº °ÍµéÀ» »ç¿ëÇÏ¸é ´õ¿í´õ À¯¿¬ÇÏ°Ô ¸¸µé¼ö ÀÖ´Ù. 4절. °á·ÐSTLÀÇ ÃÖ´ë »ç¿ëó´Â Àû´çÈ÷ È¿À²ÀûÀÎ ÀڷᱸÁ¶¸¦ ¸¸µé°í ¸¸µé¾îÁø ÀڷᱸÁ¶¿¡ ¾Ë°í¸®ÁòÀ» Àû¿ë½ÃŰ´Â ÀÛ¾÷ÀÌ´Ù. STLÀº ÀÌ·¯ÇÑ ÀÛ¾÷À» ¸Å¿ì È¿À²ÀûÀ¸·Î ºü¸¥½Ã°£¿¡ ³¡³¾¼ö ÀÖµµ·Ï µµ¿ÍÁØ´Ù. ¸Ó¸®¿¡ »ý°¢ÇÑ´ë·Î ±¸ÇöÀÌ °¡´ÉÇÏ´Ù°í º¸¸é µÉ°ÍÀÌ´Ù. º¸Åë ÀÌ·± ÀڷᱸÁ¶¿Í ¾Ë°í¸®ÁòÀº Ưº°ÇÑ °æ¿ì°¡ ¾Æ´Ï¸é ºñ½Áºñ½ÁÇÏ´Ù. ±×·¯³ª ºñ½ÁÇÔ¿¡µµ ºÒ±¸ÇÏ°í °ÅÀÇ ¸Å¹ø ÀڷᱸÁ¶¿Í ¾Ë°í¸®ÁòÀ» ´Ù½Ã ¸¸µé¾î¾ß ÇÒ°ÍÀÌ´Ù. ÀÚÄ© ÇÊ¿ä ¾ø´Â ´Ü¼ø ³ë°¡´Ù¿¡ ½Ã°£À» »©¾Ñ±æ¼ö°¡ ÀÖ´Ù. STLÀ» ¹è¿ì°í ³ª¸é ÀڷᱸÁ¶¿Í ¾Ë°í¸®ÁòÀ» ¼³°èÇϰí ÄÚµùÇÏ´Â°Ô Áñ°Å¿ö Áú°ÍÀÌ´Ù. |
|
|||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|