º¤ÅÍ´Â µ¿ÀÏ Å¸ÀÔÀÇ ÀÚ·á ÁýÇÕÀÎ ½ÃÄö½º ÄÁÅ×À̳ÊÀÇ ´ëÇ¥ÀÌ´Ù. ÅÛÇø´ ±â¹ÝÀ̹ǷΠÀÓÀÇ Å¸ÀÔÀ» ¿ä¼Ò·Î °¡Áú ¼ö ÀÖÀ¸¸ç ¿ä¼ÒÀÇ °³¼ö¿¡ µû¶ó ÀÚµ¿À¸·Î ¸Þ¸ð¸®¸¦ °ü¸®ÇÑ´Ù. Áï º¤ÅÍ´Â ÀÓÀÇ Å¸ÀÔÀÇ µ¿Àû ¹è¿·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ±¸Á¶°¡ ´Ü¼øÇÏ°í »ç¿ë¹ýÀÌ ½¬¿ì¸ç ¸î °¡Áö °æ¿ì¸¦ Á¦¿ÜÇÏ°í ´ëºÎºÐÀÇ °æ¿ì ÀÚ·á °ü¸®¿¡ Ź¿ùÇÑ ¼º´ÉÀ» º¸À̹ǷΠSTL ÄÁÅ×ÀÌ³Ê Áß È°¿ë ºóµµ°¡ °¡Àå ³ô°í ½Ç¿ëÀûÀÌ´Ù.
STLÀÇ ÄÁÅ×À̳ʵéÀº ´ëºÎºÐ ºñ½ÁÇÑ ¹æ½ÄÀ¸·Î Ãß»óȵǾî ÀÖ¾î Çϳª¸¸ Á¤¼ºµé¿© °øºÎÇØ ³õÀ¸¸é ³ª¸ÓÁö´Â Â÷ÀÌÁ¡À» È®ÀÎÇÏ´Â Á¤µµ¸¸À¸·Î ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Ù. »ý¼ºÀÚµµ °ÅÀÇ À¯»çÇÏ¸ç ¸â¹ö ÇÔ¼öÀÇ À̸§Àº ¹°·ÐÀÌ°í ¾î¶² °æ¿ì´Â ¿øÇü±îÁöµµ ¿ÏÀüÈ÷ ¶È°°´Ù. ÄÁÅ×À̳ʶó´Â Ãß»óÀûÀÎ ½Çü°¡ À¯»çÇϱ⠶§¹®¿¡ ÀÎÅÍÆäÀ̽ºµµ À¯»çÇÒ ¼ö¹Û¿¡ ¾ø´Ù. ¹°·Ð ¿ÏÀüÈ÷ °°Áö´Â ¾Ê¾Æ¼ °¢ ÄÁÅ×À̳ʸ¶´Ù ¾à°£¾¿ÀÇ Â÷ÀÌÁ¡µéµµ Á¸ÀçÇÑ´Ù. ÀÌ Àý¿¡¼ º¤ÅÍ¿¡ ´ëÇØ ¾ÆÁÖ »ó¼¼ÇÏ°Ô ¿¬±¸Çϸç ÀÌÈÄÀÇ ÄÁÅ×À̳ʵéÀº º¤ÅÍ¿Í ´Ù¸¥ Á¡À» À§ÁÖ·Î ¼³¸íÇϱâ·Î ÇÑ´Ù. ÄÁÅ×À̳ʸ¦ Àß ÀÌÇØÇÏ°í ½ÍÀ¸¸é ¿ì¼± º¤ÅͺÎÅÍ Ã¶ÀúÈ÷ ¿¬±¸ÇØ ºÁ¾ß ÇÑ´Ù.
º¤ÅÍÀÇ ³»ºÎÀûÀÎ ±¸¼º ¿ø¸®´Â CÀÇ Á¤Àû ¹è¿°ú °ÅÀÇ À¯»çÇÏ¸ç Æ¯¼º°ú Àå´ÜÁ¡µµ ¹è¿°ú µ¿ÀÏÇÏ´Ù. ¿ä¼ÒµéÀÇ Å©±â°¡ ¶È°°°í ÀÎÁ¢ÇÑ À§Ä¡¿¡ ÀÌ¿ôÇÏ¿© ¹èÄ¡µÇ¹Ç·Î ¸Þ¸ð¸®¸¦ Àû°Ô Â÷ÁöÇϸç ÀÓÀÇ À§Ä¡¸¦ ºü¸¥ ¼Óµµ·Î ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. ÃÖ»óÀ§ ·¹º§ÀÇ ÀÓÀÇ Á¢±Ù ¹Ýº¹ÀÚ¸¦ Á¦°øÇϹǷΠSTLÀÇ ¸ðµç ¾Ë°í¸®ÁòÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª »ðÀÔ, »èÁ¦½Ã ¿ä¼ÒÀÇ ÀÎÁ¢ ¹èÄ¡ ¿øÄ¢À» Áö۱â À§ÇØ ¿ä¼Ò¸¦ À̵¿½ÃÄÑ¾ß ÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖ¾î »ðÀÔ, »èÁ¦ ¼Óµµ°¡ ´À¸®´Ù´Â °ÍÀÌ ´ÜÁ¡ÀÌ´Ù. »ðÀÔ, »èÁ¦°¡ ¾ÆÁÖ ºó¹øÇÒ ¶§´Â º¤Åͺ¸´Ù´Â ¸®½ºÆ®¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù.
º¤ÅͻӸ¸ ¾Æ´Ï¶ó STLÀÇ ¸ðµç ÄÁÅ×À̳ʴ Ŭ·¡½º ÅÛÇø´À¸·Î Á¤ÀǵǾî ÀÖ´Ù. ±×·¡¼ ÅÛÇø´À¸·Î Àü´ÞµÇ´Â ÀÓÀÇÀÇ Àμö ŸÀÔµéÀ» ÀúÀåÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. º¤ÅÍÀÇ ¼±¾ð¹®Àº ´ÙÀ½°ú °°´Ù.
template <class Type, class Allocator = allocator<Type> > class vector
TypeÀº º¤ÅÍ¿¡ ÀúÀåµÇ´Â ¿ä¼ÒÀÇ Å¸ÀÔÀÌ¸ç º¤ÅÍ´Â ÀÌ Å¸ÀÔÀÇ ÁýÇÕÀ» °ü¸®ÇÑ´Ù. µÎ ¹øÂ° Àμö Allocator´Â ³»ºÎÀûÀÎ ¸Þ¸ð¸® °ü¸®¿¡ »ç¿ëµÇ´Â ÇÒ´ç±âÀε¥ µðÆúÆ®°¡ Á¦°øµÇ¹Ç·Î »ý·« °¡´ÉÇÏ´Ù. Ưº°ÇÑ °æ¿ì°¡ ¾Æ´Ñ ÇÑÀº µðÆúÆ® ÇÒ´ç±â¸¦ »ç¿ëÇϹǷΠº¤ÅÍÀÇ Àμö·Î´Â ÁÖ·Î ¿ä¼ÒÀÇ Å¸ÀÔ¸¸ÀÌ Àü´ÞµÈ´Ù.
ÀÌ ÅÛÇø´¾È¿¡´Â º¤Å͸¦ °ü¸®ÇÏ´Â ¸â¹ö º¯¼ö¿Í ¸â¹ö ÇÔ¼öµéÀÌ Æ÷ÇԵǾî ÀÖ´Ù. ¶ÇÇÑ ÄÁÅ×À̳ʿ¡¼ »ç¿ëÇϴ ŸÀԵ鵵 typedef·Î Á¤ÀǵǾî Àִµ¥ ÀÌ Å¸ÀÔÀº STLÀÇ ¸ðµç ±¸¼º ¿ä¼ÒµéÀÌ »ç¿ëÇÏ´Â ÀÏÁ¾ÀÇ ¾à¼ÓÀÌ´Ù. ¸ðµç ÄÁÅ×À̳ʴ ÀÚ½ÅÀÌ Á¤ÀÇÇϴ ŸÀÔÀ» ¾à¼ÓµÈ À̸§À¸·Î Á¦°øÇØ¾ß ÇÏ¸ç ¹Ýº¹ÀÚ³ª ¾Ë°í¸®ÁòÀº ÄÁÅ×À̳ʸ¦ Á¶ÀÛÇϱâ À§ÇØ ÀÌ Å¸ÀÔµéÀ» »ç¿ëÇÑ´Ù.
ŸÀÔ |
¼³¸í |
value_type |
ÄÁÅ×À̳ÊÀÇ ¿ä¼Ò ŸÀÔÀÌ´Ù. |
(const_) pointer |
¿ä¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ Å¸ÀÔÀÌ´Ù. ÀÌÇÏ 4°³ÀÇ Å¸ÀÔÀº »ó¼ö ¹öÀüµµ Á¦°øµÈ´Ù. |
(const_) reference |
¿ä¼ÒÀÇ ·¹ÆÛ·±½º ŸÀÔÀÌ´Ù. |
(const_) iterator |
¿ä¼ÒÀÇ ·¹ÆÛ·±½º¸¦ °¡¸®Å°´Â ¹Ýº¹ÀÚ Å¸ÀÔÀÌ´Ù. |
(const_) reverse_iterator |
¿ª¹æÇ⠹ݺ¹ÀÚ Å¸ÀÔÀÌ´Ù. |
difference_type |
µÎ ¹Ýº¹ÀÚÀÇ Â÷¸¦ Ç¥ÇöÇϴ ŸÀÔÀÌ´Ù. Åë»ó intÀÌ´Ù. |
size_type |
Å©±â¸¦ Ç¥ÇöÇϴ ŸÀÔÀÌ´Ù. Åë»ó unsignedÀÌ´Ù. |
¾î¶² ÄÁÅ×ÀÌ³Ê CÀÇ ¿ä¼Ò ŸÀÔÀ» ¾Ë°í ½Í´Ù¸é C¿¡ Á¤ÀǵǾî ÀÖ´Â value_typeÀ» ÂüÁ¶ÇÏ¸é µÈ´Ù. ¾Õ Àå¿¡¼ ¸¸µé¾î ³õÀº dump ÇÔ¼ö¿¡¼ ÄÁÅ×ÀÌ³Ê Å¸ÀÔ°ú ¶È°°Àº Ãâ·Â ½ºÆ®¸² ¹Ýº¹ÀÚ¸¦ ¸¸µé±â À§ÇØ value_typeÀ» »ç¿ëÇß¾ú´Ù. ¸ðµç ÄÁÅ×À̳ʰ¡ ¿ä¼ÒÀÇ Å¸ÀÔÀ» value_typeÀ̶ó´Â À̸§À¸·Î Á¤ÀÇÇϰí ÀÖÀ¸¹Ç·Î dump´Â ÀÓÀÇÀÇ ÄÁÅ×À̳ʸ¦ Ãâ·ÂÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù.
°°Àº ¿ø¸®·Î ÄÁÅ×À̳ʿ¡ ´ëÇÑ ¹Ýº¹ÀÚ°¡ ÇÊ¿äÇϸé ÄÁÅ×À̳ʰ¡ Á¤ÀÇÇÏ´Â iterator ŸÀÔÀ» »ç¿ëÇÏ¸é µÈ´Ù. ¹Ýº¹ÀÚµµ ¹°·Ð Ŭ·¡½º ÅÛÇø´À¸·Î Á¤ÀǵǾî Àִµ¥ Áö¿ø ÄÁÅ×À̳ʿ¡ µû¶ó ¹Ýº¹ÀÚÀÇ ½ÇÁ¦ ±¸ÇöÀº »ó´çÈ÷ ´Ù¸¦ °ÍÀ̸ç ÄÁÅ×À̳ʺ°·Î °íÀ¯ÀÇ ¹Ýº¹ÀÚ¸¦ Á¤ÀÇÇÒ °ÍÀÌ´Ù. ÇÏÁö¸¸ ÄÁÅ×À̳ʰ¡ iterator¶ó´Â ¾à¼ÓµÈ À̸§À¸·Î ¹Ýº¹ÀÚ Å¸ÀÔÀ» Á¤ÀÇÇϰí ÀÖÀ¸¹Ç·Î ¿ì¸®´Â iterator¶ó´Â ¾Ë·ÁÁø ŸÀÔÀ¸·Î º¯¼ö¸¸ ¼±¾ðÇÏ¸é ¹Ýº¹ÀÚ¸¦ ¸¸µé¾î ¾µ ¼ö ÀÖ´Ù.
º¤ÅÍÀÇ »ý¼ºÀÚ´Â ´ÙÀ½ 4 °¡Áö°¡ Áߺ¹ Á¤ÀǵǾî ÀÖ´Ù. ¹®¼»óÀÇ ¿øÇü¿¡´Â »ý¼ºÀÚÀÇ ¸¶Áö¸· Àμö·Î const A& al = A()¶ó´Â ÇÒ´ç±â Àμö°¡ Çϳª ´õ Àִµ¥ µðÆúÆ®°¡ ÁöÁ¤µÇ¾î ÀÖ°í º¸Åë »ý·«ÇϹǷΠ¿øÇü¿¡ ÀûÁö ¾Ê±â·Î ÇÑ´Ù. ½Ç¿ë¼ºµµ ¾ø´Âµ¥ ±¦È÷ ¿øÇü¸¸ º¹ÀâÇÏ°Ô ¸¸µé »ÓÀÌ´Ù. ÀÌÈÄÀÇ ÄÁÅ×À̳ʵµ ¸¶Âù°¡Áö·Î ÇÒ´ç±â´Â ¹«½ÃÇÑ´Ù.
explicit vector();
explicit vector(size_type n, const T& v = T());
vector(const vector& x);
vector(const_iterator first, const_iterator last);
ù ¹øÂ° »ý¼ºÀÚ°¡ µðÆúÆ® »ý¼ºÀÚÀÌ´Ù. ÇÒ´ç±â¸¦ Àμö·Î ¹Þ±â´Â ÇÏÁö¸¸ »ý·« °¡´ÉÇϹǷΠÀÌ »ý¼ºÀÚ°¡ µðÆúÆ® »ý¼ºÀÚ ¿ªÇÒÀ» ÇÑ´Ù. Àμö¾øÀÌ º¤Å͸¦ »ý¼ºÇÒ °æ¿ì ¿ä¼Ò¸¦ °¡ÁöÁö ¾Ê´Â ºó º¤ÅͰ¡ ¸¸µé¾îÁø´Ù. ÃÖÃÊ ºó »óÅ·Π»ý¼ºÇÏ´õ¶óµµ ¸Þ¸ð¸®°¡ ÀÚµ¿À¸·Î °ü¸®µÇ¹Ç·Î ÀÌÈÄ ¾ó¸¶µçÁö ¿ä¼Ò¸¦ Ãß°¡ÇÒ ¼ö ÀÖ´Ù.
µÎ ¹øÂ° »ý¼ºÀÚ´Â º¤ÅÍÀÇ Ãʱâ Å©±â¸¦ ÁöÁ¤Çϸç T ŸÀÔÀÇ ÃʱⰪÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ÃʱⰪÀÇ µðÆúÆ®´Â TÀÇ µðÆúÆ® »ý¼ºÀÚ°¡ ¸¸µç °ªÀ¸·Î ÁöÁ¤µÇ¾î Àִµ¥ Åë»ó 0, false, NULL, "" µîÀÌ µÉ °ÍÀÌ´Ù. ¹°·Ð ¾îµð±îÁö³ª µðÆúÆ®ÀÏ »ÓÀ̹ǷΠÃʱⰪÀ» ¸í½ÃÇϸé ÁöÁ¤ÇÑ °ª n°³¸¦ °¡Áö´Â º¤ÅͰ¡ ¸¸µé¾îÁø´Ù. ÀÌ »ý¼ºÀÚ´Â ¼Óµµ¸¦ ³ôÀ̱â À§ÇØ Ã¹ ¹øÂ° ¿ä¼Ò¸¸ »ý¼ºÇÑ ÈÄ ³ª¸ÓÁö n-1°³ÀÇ ¿ä¼Ò´Â º¹»ç »ý¼ºÀÚ¸¦ È£ÃâÇÏ¿© »ý¼ºÇÑ´Ù.
µÎ ¹øÂ° »ý¼ºÀÚ´Â Á¤¼ö°ª Çϳª¸¸À» ÃëÇϹǷΠº¯È¯ »ý¼ºÀÚÀÌ´Ù. ±×·¡¼ explicit·Î ¼±¾ðÇÏ¿© ¸í½ÃÀûÀÎ »ý¼º¸¸À» Çã¶ôÇÑ´Ù. ¸¸¾à ÀÌ »ý¼ºÀÚ°¡ explicit°¡ ¾Æ´Ï¶ó¸é vi=3 µûÀ§·Î ´ëÀÔÇÒ ¶§ ÄÄÆÄÀÏ·¯´Â Á¤¼ö 3À¸·ÎºÎÅÍ Å©±â 3ÀÇ º¤Å͸¦ »ý¼ºÇÏ¿© vi¿¡ ´ëÀÔÇÏ·Á°í ÇÒ °ÍÀÌ´Ù. ¶Ç´Â º¤Å͸¦ Àμö·Î ÃëÇÏ´Â ÇÔ¼ö¿¡°Ô Á¤¼ö¸¦ ³Ñ°Üµµ º°´Ù¸¥ ºÒ¸¸¾øÀÌ Á¤¼ö·ÎºÎÅÍ º¤Å͸¦ ¸¸µé¾î ÇÔ¼ö¸¦ È£ÃâÇÏ·Á°í ÇÒ °ÍÀÌ´Ù. Á¤¼ö¿Í º¤Åʹ ȣȯ ŸÀÔÀÌ ¾Æ´Ï¹Ç·Î ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÏÁö ¾Ê´Â ÇÑ º¯È¯ÇÏÁö ¾Ê´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ¸ç ±×·¡¼ ÀÌ »ý¼ºÀÚ°¡ explicit·Î ¼±¾ðµÇ¾î ÀÖ´Â °ÍÀÌ´Ù.
¼¼ ¹øÂ° »ý¼ºÀÚ´Â º¹»ç »ý¼ºÀÚÀε¥ ´Ù¸¥ º¤ÅͷκÎÅÍ ¶È°°Àº º¤Å͸¦ ¸¸µé¾î ³½´Ù. ³»ºÎ¿¡¼´Â ¾Æ¸¶µµ ±íÀº º¹»ç¸¦ ÇÒ °ÍÀÌ´Ù. ³× ¹øÂ° »ý¼ºÀÚ´Â ¹Ýº¹ÀÚ°¡ ÁöÁ¤ÇÑ ±¸°£ÀÇ ¿ä¼ÒµéÀ» °¡Áö´Â »õ·Î¿î º¤Å͸¦ »ý¼ºÇÑ´Ù. À̶§ ¹Ýº¹ÀÚ´Â ²À º¤ÅÍÀÇ ¹Ýº¹ÀÚ°¡ ¾Æ´Ï´õ¶óµµ »ó°ü¾ø´Ù. Á¤Àû ¹è¿À̳ª ¸®½ºÆ®ÀÇ ¹Ýº¹ÀÚ¸¦ Àü´ÞÇÒ ¼öµµ ÀÖ¾î ´Ù¸¥ ÄÁÅ×À̳ʷκÎÅÍ º¤Å͸¦ ÃʱâÈÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â º¤ÅÍÀÇ »ý¼ºÀÚ 4 °³¸¦ Å×½ºÆ®ÇÑ´Ù.
¿¹ Á¦ : vectorcon |
#include <iostream>
#include <string>
#include <vector>
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()
{
vector<string> v1;dump("v1",v1);
vector<double> v2(10);dump("v2",v2);
vector<int> v3(10,7);dump("v3",v3);
vector<int> v4(v3);dump("v4",v4);
int ar[]={1,2,3,4,5,6,7,8,9};
vector<int> v5(&ar[2],&ar[5]);dump("v5",v5);
}
4 °¡Áö »ý¼ºÀÚ¸¦ ¸ðµÎ È£ÃâÇÏ¿© ¿©·¯ °¡Áö ¹æ¹ýÀ¸·Î º¤Å͸¦ ¸¸µé¾î º¸¾Ò´Ù. Àß »ý¼ºµÇ°ÚÁö¸¸ ȸ鿡 Ãâ·ÂÇØ º¸Áö ¾ÊÀ¸¸é ¿¹Á¦°¡ Àǽɽº·¯¿ì¹Ç·Î ¾ÕÀå¿¡¼ ¸¸µé¾ú´ø dump ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© º¤ÅÍ Àüü¸¦ Ãâ·ÂÇØ º¸¾Ò´Ù. ¾ÕÀ¸·Îµµ ÄÁÅ×À̳ʸ¦ Ãâ·ÂÇÒ ¶§´Â ÀÌ ÇÔ¼ö¸¦ Á¾Á¾ ¾Ö¿ëÇÒ °ÍÀÌ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.
v1 ==>
v2 ==> 0 0 0 0 0 0 0 0 0 0
v3 ==> 7 7 7 7 7 7 7 7 7 7
v4 ==> 7 7 7 7 7 7 7 7 7 7
v5 ==> 3 4 5
°¢°¢ÀÇ »ý¼ºÀÚ°¡ º¤Å͸¦ ¾î¶»°Ô »ý¼ºÇØ ³õ¾Ò´ÂÁö Á¡°ËÇØ º¸ÀÚ. v1Àº µðÆúÆ® »ý¼ºÀÚ·Î Àμö¾øÀÌ ¼±¾ðÇßÀ¸¹Ç·Î ºó º¤ÅÍ·Î ¸¸µé¾îÁø´Ù. ³»ºÎ¿¡ ¿ä¼Ò¸¦ ÀüÇô °¡ÁöÁö ¾ÊÁö¸¸ »ðÀÔ, Ãß°¡ ÇÔ¼ö·Î ¾ó¸¶µçÁö ¿ä¼Ò¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Ù.
v2´Â Å©±â 10ÀÇ ½Ç¼öÇü º¤ÅÍÀÌµÇ ÃʱⰪÀ» ÁÖÁö ¾Ê¾ÒÀ¸¹Ç·Î ½Ç¼öÀÇ µðÆúÆ®°ªÀÎ 0.0À¸·Î Ãʱâ鵃 °ÍÀÌ´Ù. v2(10,1.2)·Î ÃʱⰪÀ» ÁÖ¸é 10°³ÀÇ ¿ä¼ÒµéÀº ¸ðµÎ 1.2ÀÇ °ªÀ» °¡Áø´Ù. v3´Â Á¤¼öÇüÀÇ º¤ÅÍÀÌµÇ Å©±â´Â 10À̰í ÃʱⰪ 7À» ÁÖ¾úÀ¸¹Ç·Î 7ÀÌ ¿ °³ µé¾î ÀÖ´Â »óÅ·Π»ý¼ºµÈ´Ù. v4´Â v3¸¦ º¹»çÇØ¼ ¸¸µé¾îÁ³À¸¹Ç·Î ¿ÏÀüÈ÷ ¶È°°Àº ¸ð¾çÀ» °¡Áø´Ù. ¹°·Ð »ý¼º ´Ü°è¿¡¼¸¸ °°À» »ÓÀÌ¸ç °¢ÀÚ´Â ¼·Î µ¶¸³ÀûÀ¸·Î ¼öÁ¤µÉ ¼ö ÀÖ´Ù.
¸¶Áö¸· v5´Â ¹Ýº¹ÀÚ ±¸°£À» ¹Þ¾ÆµéÀÌ´Â »ý¼ºÀÚ·Î ´Ù¸¥ ÄÁÅ×À̳ÊÀÇ ±¸°£À¸·ÎºÎÅÍ ÃʱⰪÀ» ¹Þ¾Æ¿Â´Ù. ¿¹Á¦¿¡¼´Â Á¤¼ö ¹è¿ arÀÇ ÀϺΠ±¸°£À» ÃëÇØ »ý¼ºÇϵµ·Ï Çߴµ¥ ¸®½ºÆ®³ª µ¥Å© ¶Ç´Â ÀÌ¹Ì ¸¸µé¾îÁø ´Ù¸¥ º¤ÅÍÀÇ ±¸°£À¸·ÎºÎÅÍ »ý¼ºÇÒ ¼öµµ ÀÖ´Ù. v5 º¤ÅͰ¡ »ý¼ºµÇ´Â °úÁ¤Àº ´ÙÀ½°ú °°´Ù. ¹Ýº¹ÀÚ ±¸°£ÀÇ ³¡Àº Ç×»ó Á¦¿ÜµÈ´Ù´Â Á¡À» ÁÖÀÇÇϵµ·Ï ÇÏÀÚ.
º¤ÅÍ´Â ¿ä¼Ò ÀúÀåÀ» À§ÇÑ ¸Þ¸ð¸®¸¦ ÀÚµ¿À¸·Î °ü¸®ÇÑ´Ù. ¿ä¼Ò°¡ »ðÀ﵃ ¶§´Â º¤ÅÍ Å©±â¸¦ ½ÅÃàÀûÀ¸·Î ´Ã¸®°í º¤ÅͰ¡ ÆÄ±«µÉ ¶§ ÇÒ´çÇÑ ¸Þ¸ð¸®µµ ¾Ë¾Æ¼ Á¤¸®ÇÑ´Ù. ±×·¡¼ º°µµ·Î º¤ÅÍ Á¤¸® Äڵ带 ÀÛ¼ºÇÒ Çʿ䰡 ¾ø´Ù. º¤ÅÍÀÇ ¸Þ¸ð¸® °ü¸® ±â´ÉÀº ¾Ë¾Æ¼ µ¿ÀÛÇϵµ·Ï ÀÚµ¿ÈµÇ¾î ÀÖÁö¸¸ °¡²ûÀº °³¹ßÀÚ°¡ Á÷Á¢ °³ÀÔÇÏ¿© Å©±â¸¦ °ü¸®ÇØ¾ß ÇÒ Çʿ䵵 ÀÖ´Ù.
º¤ÅÍÀÇ ¸Þ¸ð¸® °ü¸® ÇÔ¼öµéÀº stringÀÇ °ü¸® ÇÔ¼öµé°ú °ÅÀÇ À¯»çÇÏ´Ù. stringÀÌ »ç½Ç»ó ¹®ÀÚÀÇ º¤ÅÍÀ̱⠶§¹®¿¡ ºñ½ÁÇÒ ¼ö¹Û¿¡ ¾ø´Ù. ÀÌ·± °É µÎ°í Àϰü¼ºÀ̶ó°í Çϸç STL Àüü¿¡ ÀϰüµÇ°Ô ³ªÅ¸³´Ù. ±×·¡¼ ¾Õ¿¡¼ °øºÎ¸¦ Àß ÇØ ³õÀ¸¸é µÚÂÊ °øºÎ°¡ ½¬¿öÁú ¼ö ÀÖ´Â °ÍÀÌ´Ù. ¸¶Âù°¡Áö·Î º¤Å͸¦ Àß °øºÎÇØ ³õÀ¸¸é ¸®½ºÆ®³ª µ¥Å©´Â ´©¿ö¼ Çܹö±× ¸Ô±â¸¸ÅÀ̳ª ½±´Ù.
ÇÔ¼ö |
¼³¸í |
size |
¿ä¼Ò °³¼ö¸¦ Á¶»çÇÑ´Ù. |
max_size |
º¤ÅͰ¡ °ü¸®ÇÒ ¼ö ÀÖ´Â ÃÖ´ë ¿ä¼Ò °³¼ö¸¦ Á¶»çÇÑ´Ù. |
capacity |
ÇÒ´çµÈ ¿ä¼Ò °³¼ö¸¦ ±¸ÇÑ´Ù. |
resize(n) |
Å©±â¸¦ º¯°æÇÑ´Ù. »õ Å©±â°¡ ´õ Ŭ °æ¿ì º¤ÅÍÀÇ ¿ø·¡ ³»¿ëÀº À¯ÁöÇÏ¸ç »õ·Î ÇÒ´çµÈ ¿ä¼Ò´Â 0À¸·Î ÃʱâȵȴÙ. |
reserve(n) |
ÃÖ¼ÒÇÑÀÇ Å©±â¸¦ ÁöÁ¤ÇÏ¸ç ¸Þ¸ð¸®¸¦ ¹Ì¸® ÇÒ´çÇØ ³õ´Â´Ù. »õ Å©±â°¡ ´õ Ŭ °æ¿ì º¤ÅÍÀÇ ¿ø·¡ ³»¿ëÀº À¯ÁöÇÑ´Ù. »õ·Î ÇÒ´çµÈ ¿ä¼Ò´Â ÃʱâȵÇÁö ¾Ê´Â´Ù. |
clear(n) |
¸ðµç ¿ä¼Ò¸¦ »èÁ¦ÇÑ´Ù. |
empty |
ºñ¾î ÀÖ´ÂÁö Á¶»çÇÑ´Ù. |
ÀÌÁß °³¼ö¸¦ Á¶»çÇÏ´Â size¿Í ¿ë·®À» ¹Ì¸® È®º¸ÇÏ´Â reserve°¡ ƯÈ÷ ¸¹ÀÌ »ç¿ëµÈ´Ù. °£´ÜÇÑ Å×½ºÆ® ¿¹Á¦¸¦ ÀÛ¼ºÇÏ¿© °¢ ¸â¹ö ÇÔ¼ö°¡ ¾î¶² °ªÀ» Á¶»çÇÏ´ÂÁö È®ÀÎÇØ º¸ÀÚ.
¿¹ Á¦ : vectormem |
#include <iostream>
#include <vector>
using namespace std;
void main()
{
vector<int> vi;
printf("max_size = %d\n",vi.max_size());
printf("size = %d, capacity = %d\n",vi.size(),vi.capacity());
vi.push_back(123);
vi.push_back(456);
printf("size = %d, capacity = %d\n",vi.size(),vi.capacity());
vi.resize(10);
printf("size = %d, capacity = %d\n",vi.size(),vi.capacity());
vi.reserve(20);
printf("size = %d, capacity = %d\n",vi.size(),vi.capacity());
}
½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.
max_size = 1073741823
size = 0, capacity = 0
size = 2, capacity = 2
size = 10, capacity = 10
size = 10, capacity = 20
ÃÖ´ë Å©±â´Â ¹«·Á 10¾ï°³³ª µÇ´Âµ¥ Á¤¼öÇü 10¾ï°³À̹ǷΠ4G±îÁö º¤ÅÍ Å©±â¸¦ ´Ã¸± ¼ö ÀÖ´Ù´Â ¾ê±âÀÌ´Ù. ÀÌ Å©±â´Â À̷лóÀÇ Å©±âÀÏ »Ó ½ÇÁ¦·Î´Â ¿î¿µÃ¼Á¦ÀÇ ¸Þ¸ð¸® Á¦°ø ´É·Â¿¡ ¿µÇâÀ» ¹Þ´Âµ¥ ´ëºÎºÐÀÇ È¯°æ¿¡¼ ÁÖ¼Ò °ø°£ÀÇ ºÎÁ·À¸·Î ÀÎÇØ Àý¹Ý Á¤µµ¹Û¿¡ È®ÀåÇÒ ¼ö ¾ø´Ù. ±×·¸´Ù°í ÇÏ´õ¶óµµ 5¾ï°³´Â ½Ç·Î ¾öû³ °³¼öÀε¥ ¹«ÇÑÇÏ´Ù°í Ç¥ÇöÇØµµ Ʋ¸®Áö ¾ÊÀ» Á¤µµ´Ù.
ºó º¤ÅÍ·Î ¸¸µé¸é Å©±â 0À¸·Î »ý¼ºµÇ¸ç ¿ä¼Ò¸¦ µÎ °³ Ãß°¡Çϸé Å©±â°¡ 2·Î ´Ã¾î³´Ù. resize´Â ÁöÁ¤ÇÑ Å©±â·Î ¿ä¼Ò ¼ö¸¦ ´Ã¸®¸ç »õ·Î »ý°Ü³ ¿ä¼Ò´Â ŸÀÔÀÇ µðÆúÆ®°ªÀ¸·Î ÃʱâȵǴµ¥ vi´Â Á¤¼öÇü º¤ÅÍÀ̹ǷΠint()°ªÀÎ 0À¸·Î Ãʱâ鵃 °ÍÀÌ´Ù. capacity´Â ÇÒ´çµÇ¾î ÀÖ´Â ¸Þ¸ð¸®¾çÀε¥ ÀÌ Å©±â´Â sizeº¸´Ù Å©°Å³ª °°´Ù. º¤ÅÍ´Â ¸Þ¸ð¸®°¡ ºÎÁ·ÇÒ °æ¿ì ÇöÀç ¿ë·®ÀÇ 2¹è¾¿ ¸Þ¸ð¸®¸¦ ´Ã·Á ³ª°¡¸ç ¾ÕÀ¸·Î Ãß°¡µÉ ¿ä¼Ò¸¦ °í·ÁÇÏ¿© ¾à°£ÀÇ ¿©À¯ºÐÀ» ¹Ì¸® ÇÒ´çÇØ ³õ´Â´Ù. capacity() - size()´Â ÇÒ´çµÈ ¸Þ¸ð¸®¿¡¼ ½ÇÁ¦ »ç¿ëÇÑ ¾çÀÇ Â÷ÀÌÀÌ¸ç º°µµÀÇ ÀçÇÒ´ç¾øÀ̵µ À̸¸ÅÀ» ´õ ÀúÀåÇÒ ¼ö ÀÖ´Ù.
reserve´Â ¹Ì¸® ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ ³õ´Â ÇÔ¼öÀε¥ ÀçÇÒ´çÀÇ ºÒÀÌÀͰú ¹Ýº¹ÀÚ ¹«È¿È¸¦ ÇÇÇϱâ À§ÇØ °¡²û ÀÌ ÇÔ¼ö°¡ ²À ÇÊ¿äÇÏ´Ù. º¤ÅͰ¡ °è¼Ó ´Ã¾î³¯ °æ¿ì ¸Þ¸ð¸®°¡ ÀçÇÒ´çµÇ¸ç À̶§ µÚÂÊÀÇ ÀÚÀ¯ ¿µ¿ªÀÌ ÃæºÐÇÏÁö ¾ÊÀ» °æ¿ì Àüü¸¦ ´Ù¸¥ À§Ä¡·Î ¿Å°Ü º¹»çÇϱ⵵ ÇØ¾ß Çϴµ¥ ÀÌ´Â ¾ÆÁÖ ´À¸° µ¿ÀÛÀÌ´Ù. ¹é¸¸°³ÀÇ ¿ä¼Ò¸¦ ¿¬¼ÓÀûÀ¸·Î Ãß°¡Çϸé 19¹ø Á¤µµ ÀçÇÒ´çÀÌ ÀϾ´Âµ¥ ÀÌ·¸°Ô µÇ¸é ÀüüÀûÀÎ »ðÀÔ ¼Óµµ°¡ ½ÉÇÏ°Ô ¶³¾îÁú °ÍÀÌ´Ù. ¹Ì¸® ÇÊ¿äÇÑ ¸Þ¸ð¸®¾çÀ» ¾È´Ù¸é ÀÚµ¿À¸·Î ¸Þ¸ð¸®¸¦ ´Ã¸®µµ·Ï ³»¹ö·Á µÎÁö ¸»°í reserve·Î ÇÊ¿äÇÑ ¸Þ¸ð¸®¸¦ ¹Ì¸® È®º¸ÇØ ³õ´Â °ÍÀÌ À¯¸®ÇÏ´Ù.
clear´Â º¤Å͸¦ ºñ¿ì°í empty´Â º¤ÅͰ¡ ºñ¾î ÀÖ´ÂÁö Á¡°ËÇÑ´Ù. empty´Â size() == 0 Á¶°ÇÀ» Á¡°ËÇϴµ¥ ÀÌ µÎ Á¶°ÇÀÌ ³í¸®ÀûÀ¸·Î´Â °°Áö¸¸ ½ÇÁ¦·Î´Â ±²ÀåÇÑ Â÷À̰¡ ÀÖÀ» ¼öµµ ÀÖ´Ù. size´Â Á¤È®ÇÑ °³¼ö¸¦ ±¸ÇϹǷΠ¿ä¼Ò°¡ ¸¹À» °æ¿ì ÀÏÀÏÀÌ ¼¼¾î ºÁ¾ß ÇÑ´Ù. ƯÈ÷ ¸®½ºÆ®°°Àº ÄÁÅ×À̳ʴ °³¼ö¸¦ ±¸Çϱâ À§Çؼµµ ¼øÈ¸°¡ ÇÊ¿äÇϹǷΠsizeÀÇ ¼Óµµ´Â ´Ù¼Ò ´À¸®´Ù. ÇÏÁö¸¸ empty´Â 0ÀÎÁö ¾Æ´ÑÁö¸¸À» Á¡°ËÇϸç ÈξÀ ´õ ºü¸¥ ¼Óµµ·Î ÄÁÅ×À̳ʰ¡ ºñ¾î ÀÖ´ÂÁö¸¦ Á¡°ËÇØ³»¹Ç·Î °¡±ÞÀûÀ̸é empty¸¦ »ç¿ëÇÏ´Â °ÍÀÌ À¯¸®ÇÏ´Ù.