39-3-³ª.»ó¼ö ¹Ýº¹ÀÚ

¾ÈÀüÇÑ ÂüÁ¶¸¦ À§ÇØ Æ÷ÀÎÅͳª ·¹ÆÛ·±½º¿¡ »ó¼ö¼ºÀ» ÁÙ ¼ö ÀÖµíÀÌ ¹Ýº¹ÀÚµµ »ó¼ö¼ºÀ» °¡Áú ¼ö ÀÖ´Ù. ºñ»ó¼ö ¹Ýº¹ÀÚ´Â ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇϹǷΠ*¿¬»êÀÚ¿Í ÇÔ²² ´ëÀÔ½ÄÀÇ Áº¯¿¡ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ »ó¼ö ¹Ýº¹ÀÚ´Â »ó¼ö ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇϹǷΠ´ëÀÔ½ÄÀÇ Áº¯¿¡ ³õ¾Æ °ªÀ» º¯°æÇÒ ¼ö ¾ø°í ¿À·ÎÁö ÀÐÀ» ¼ö¸¸ ÀÖ´Ù. »ó¼ö ¹Ýº¹ÀÚ¿Í ºñ»ó¼ö ¹Ýº¹ÀÚ´Â *¿¬»êÀÚ°¡ ¸®ÅÏÇÏ´Â ·¹ÆÛ·±½ºÀÇ »ó¼ö¼ºÀÌ ´Ù¸£´Ù.

ºñ»ó¼ö ¹Ýº¹ÀÚ´Â °¢ ÄÁÅ×À̳ʺ°·Î iterator¶ó´Â ŸÀÔÀ¸·Î Á¤ÀǵǴµ¥ ºñÇØ »ó¼ö ¹Ýº¹ÀÚ´Â const_iterator ŸÀÔÀ¸·Î Á¤ÀǵǾî ÀÖ´Ù. Àб⸸ ÇÏ´Â »ó¼ö ¹Ýº¹ÀÚ°¡ ÇÊ¿äÇÏ´Ù¸é ÀÌ Å¸ÀÔÀ¸·Î °´Ã¼¸¦ ¼±¾ðÇÏ¸é µÈ´Ù. ´Ü, »ó¼ö ¹Ýº¹ÀÚ°¡ °¡¸®Å°´Â ´ë»óÀÌ »ó¼öÀÌÁö ¹Ýº¹ÀÚ ±× ÀÚü°¡ »ó¼öÀÎ °ÍÀº ¾Æ´Ï¹Ç·Î ÀüÈÄ·Î À̵¿ÇÏ¿© ´Ù¸¥ ¿ä¼Ò¸¦ °¡¸®Å°´Â °ÍÀº °¡´ÉÇÏ´Ù. const char *·Î ¼±¾ðµÈ p Æ÷ÀÎÅÍ·Î ¹®ÀÚ¸¦ ¹Ù²Ü ¼ö ¾øÁö¸¸ p ÀÚü´Â ´Ù¸¥ ¹®ÀÚ·Î À̵¿ °¡´ÉÇÑ °Í°ú ¸¶Âù°¡ÁöÀÌ´Ù.

ÄÁÅ×À̳ÊÀÇ begin, end ¸â¹ö ÇÔ¼ö´Â »ó¼ö, ºñ»ó¼ö ¹öÀüÀ¸·Î Áߺ¹ Á¤ÀǵǾî ÀÖ°í ÄÁÅ×À̳ʰ¡ »ó¼öÀÏ ¶§´Â »ó¼ö ¹Ýº¹ÀÚ¸¦ ¸®ÅÏÇÑ´Ù. ºñ»ó¼ö´Â Ç×»ó »ó¼ö¿¡ ´ëÀÔÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¼³»ç ºñ»ó¼ö ÄÁÅ×À̳ÊÀÇ ¹Ýº¹ÀÚ¶ó ÇÏ´õ¶óµµ »ó¼ö ¹Ýº¹ÀÚ¿¡ °ð¹Ù·Î ´ëÀÔÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ ´ÙÀ½ ´ëÀÔ¹®Àº ¹®¹ýÀûÀ¸·Î ÇÕ´çÇÏ´Ù.

 

vector<int> vi;

vector<int>::const_iterator cit=vi.begin();

 

vi°¡ ºñ»ó¼ö ÄÁÅ×À̳ÊÀ̹ǷΠbegin¸â¹ö ÇÔ¼ö°¡ ºñ»ó¼ö ¹Ýº¹ÀÚ¸¦ ¸®ÅÏÇÏÁö¸¸ »ó¼ö ¹Ýº¹ÀÚ·Î ¼±¾ðµÈ cit¿¡ ´ëÀÔ °¡´ÉÇÏ´Ù. ¿Ö³ÄÇϸé ÀÐ°í ¾²±â°¡ °¡´ÉÇÑ ¹Ýº¹ÀÚ¸¦ ¹Þ¾Æ Àб⠱â´É¸¸ »ç¿ëÇÒ °ÍÀ̹ǷΠÀüÇô À§ÇèÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ±×·¯³ª ¹Ý´ë·Î »ó¼ö ÄÁÅ×À̳ÊÀÇ ¹Ýº¹ÀÚ¸¦ ºñ»ó¼ö ¹Ýº¹ÀÚ¿¡ ´ëÀÔÇÏ´Â °ÍÀº ¾ÈµÈ´Ù. »ó¼ö ÄÁÅ×À̳ʿ¡ ´ëÇؼ­´Â ¹Ýµå½Ã »ó¼ö ¹Ýº¹ÀÚ¸¸ »ç¿ëÇØ¾ß ÇÑ´Ù.

ÄÁÅ×À̳ʶõ ¸¸µé°í ³ª¸é ¿ä¼Ò¸¦ ä¿ö ³Ö¾î¾ß ¾µ ¼ö ÀÖÀ¸¹Ç·Î »ç½Ç ÄÁÅ×À̳ʸ¦ »ó¼ö·Î »ý¼ºÇÒ ÀÏÀº ÀüÇô ¾ø´Ù°í ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª »ó¼ö ÄÁÅ×À̳ʸ¦ Àμö·Î ¹Þ´Â ÇÔ¼ö°¡ Á¸ÀçÇÒ ¼ö ÀÖÀ¸¸ç Àü´Þ¹ÞÀº ÄÁÅ×À̳ʰ¡ ÀÌ ÇÔ¼ö ³»¿¡¼­´Â ÀÓ½ÃÀûÀ¸·Î »ó¼ö¼ºÀ» °¡Áö°Ô µÈ´Ù. »ó¼ö ÄÁÅ×À̳ʸ¦ ¾×¼¼½ºÇÒ ¶§´Â »ó¼ö ¹Ýº¹ÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ vectorsumÀº º¤ÅÍÀÇ Çհ踦 ±¸ÇÏ´Â ÇÔ¼öÀÌ´Ù.

 

¿¹ Á¦ : constiterator

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

 

int vectorsum(const vector<int> &cvt)

{

     vector<int>::const_iterator cit;

     int sum=0;

 

     for (cit=cvt.begin();cit!=cvt.end();cit++) {

          sum+=*cit;

     }

     // *cit=1234;       // ¿¡·¯

     return sum;

}

 

void main()

{

     int ari[]={80,98,75,60,100};

     vector<int> vi(&ari[0],&ari[5]);

 

     int sum;

     sum=vectorsum(vi);

     printf("ÃÑ ÇÕÀº %dÀÔ´Ï´Ù.\n",sum);

}

 

¿ä¼ÒµéÀÇ Çհ踦 ±¸Çϱâ À§Çؼ­´Â º¤ÅÍÀÇ ¿ä¼ÒµéÀ» ¼ø¼­´ë·Î Àб⸸ ÇÏ¸ç ¾²´Â µ¿ÀÛÀº ÀüÇô ÇÊ¿ä¾øÀ¸¹Ç·Î vectorsum ÇÔ¼ö´Â ´ë»ó º¤Å͸¦ »ó¼ö ·¹ÆÛ·±½º·Î Àü´Þ¹Þ¾Ò´Ù. ÀÌ ÄÁÅ×À̳ÊÀÇ ¿ä¼Ò¸¦ ¼øȸÇϱâ À§Çؼ­´Â »ó¼ö ¹Ýº¹ÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. cit¸¦ ºñ»ó¼ö ¹Ýº¹ÀÚ·Î ¼±¾ðÇÏ¸é ¿¡·¯·Î 󸮵ȴÙ.

·çÇÁ ³»ºÎ¿¡¼­ *cit·Î º¤ÅÍÀÇ ¿ä¼Ò¸¦ ¼ø¼­´ë·Î Àоî sum¿¡ ´©ÀûÇϴµ¥ Àд °ÍÀº ¾ó¸¶µçÁö °¡´ÉÇÏ´Ù. ·çÇÁÀÇ Áõ°¨¹®¿¡¼­´Â cit++·Î ¹Ýº¹ÀÚ¸¦ ´ÙÀ½ À§Ä¡·Î À̵¿½ÃÅ°´Âµ¥ ¹Ýº¹ÀÚ ÀÚü´Â »ó¼ö°¡ ¾Æ´Ï¹Ç·Î ´Ù¸¥ À§Ä¡·Î À̵¿ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª *cit¿¡ ¾î¶² °ªÀ» ´ëÀÔÇÏ¸é ¿¡·¯·Î 󸮵Ǵµ¥ cit°¡ ¸®ÅÏÇÏ´Â ·¹ÆÛ·±½º°¡ »ó¼öÀ̱⠶§¹®ÀÌ´Ù.

»ó¼ö ÄÁÅ×À̳ʿ¡ ´ëÇؼ­´Â »ó¼ö ÇÔ¼ö¸¸ È£ÃâÇÒ ¼ö ÀÖ´Ù. insert, erase ¸â¹öó·³ ÄÁÅ×À̳ʿ¡ ¿ä¼Ò¸¦ »ðÀÔ, »èÁ¦ÇÏ´Â ÇÔ¼ö´Â ÄÁÅ×À̳ʸ¦ º¯°æ½ÃÅ°¹Ç·Î »ó¼ö ÄÁÅ×À̳ʷδ ȣÃâÇÒ ¼ö ¾ø´Ù. ÀÏ¹Ý ¾Ë°í¸®Áò ÇÔ¼öµéÀº º»Ã¼¿¡¼­ ¾î¶² µ¿ÀÛÀ» Çϴ°¡¿¡ µû¶ó »ó¼ö ÄÁÅ×ÀÌ³Ê »ç¿ë °¡´É¼ºÀÌ ´Þ¶óÁö´Âµ¥ Àб⸸ ÇÏ´Â ÇÔ¼ö´Â È£ÃâÇÒ ¼ö ÀÖÁö¸¸ ÄÁÅ×À̳ʸ¦ º¯°æÇÏ´Â ÇÔ¼ö´Â ¾µ ¼ö ¾ø´Ù. ¿¹Á¦ÀÇ ³¡¿¡ ´ÙÀ½ µÎ ÁÙÀ» Ãß°¡ÇØ º¸ÀÚ.

 

find(cvt.begin(),cvt.end(),60);

sort(cvt.begin(),cvt.end());

 

cvtÀÇ begin, end°¡ »ó¼ö ¹Ýº¹ÀÚ¸¦ ¸®ÅÏÇϹǷΠµÎ ÇÔ¼ö´Â »ó¼ö ¹Ýº¹ÀÚ¸¦ ¹Þ¾ÆµéÀÌ´Â ¹öÀüÀÌ ±¸Ã¼È­µÉ °ÍÀÌ´Ù. ÀÌ ÇÔ¼öµéÀÌ Àü´Þ¹Þ´Â ¹Ýº¹ÀÚ´Â °ªÀ» º¯°æÇÏ´Â ±â´ÉÀ» Á¦°øÇÏÁö ¾Ê´Â´Ù. find ÇÔ¼ö´Â °ªÀ» °Ë»öÇϱâ À§ÇØ Àб⸸ ÇϹǷΠ»ó¼ö ¹Ýº¹ÀÚ¿Í ÇÔ²² »ç¿ëµÇ¾îµµ ¾Æ¹« ¹®Á¦°¡ ¾ø´Ù. ±×·¯³ª sort´Â °ªÀ» ±³È¯Çϱâ À§ÇØ ¹Ýº¹ÀÚ¿¡ °ªÀ» ¾²´Âµ¥ »ó¼ö ¹Ýº¹ÀÚ°¡ ÀÌ ±â´ÉÀ» Á¦°øÇÏÁö ¾ÊÀ¸¹Ç·Î ÄÄÆÄÀÏ ¿¡·¯·Î 󸮵ȴÙ. ŸÀÔÀÌ ºÒÀÏÄ¡ÇϹǷΠÀ߸øµÈ µ¿ÀÛÀ» ÄÄÆÄÀÏ Áß¿¡ Áï½Ã ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.