¾ÈÀüÇÑ ÂüÁ¶¸¦ À§ÇØ Æ÷ÀÎÅͳª ·¹ÆÛ·±½º¿¡ »ó¼ö¼ºÀ» ÁÙ ¼ö ÀÖµíÀÌ ¹Ýº¹ÀÚµµ »ó¼ö¼ºÀ» °¡Áú ¼ö ÀÖ´Ù. ºñ»ó¼ö ¹Ýº¹ÀÚ´Â ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇϹǷΠ*¿¬»êÀÚ¿Í ÇÔ²² ´ëÀÔ½ÄÀÇ Áº¯¿¡ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ »ó¼ö ¹Ýº¹ÀÚ´Â »ó¼ö ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇϹǷΠ´ëÀÔ½ÄÀÇ Áº¯¿¡ ³õ¾Æ °ªÀ» º¯°æÇÒ ¼ö ¾ø°í ¿À·ÎÁö ÀÐÀ» ¼ö¸¸ ÀÖ´Ù. »ó¼ö ¹Ýº¹ÀÚ¿Í ºñ»ó¼ö ¹Ýº¹ÀÚ´Â *¿¬»êÀÚ°¡ ¸®ÅÏÇÏ´Â ·¹ÆÛ·±½ºÀÇ »ó¼ö¼ºÀÌ ´Ù¸£´Ù.
ºñ»ó¼ö ¹Ýº¹ÀÚ´Â °¢ ÄÁÅ×À̳ʺ°·Î 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´Â °ªÀ» ±³È¯Çϱâ À§ÇØ ¹Ýº¹ÀÚ¿¡ °ªÀ» ¾²´Âµ¥ »ó¼ö ¹Ýº¹ÀÚ°¡ ÀÌ ±â´ÉÀ» Á¦°øÇÏÁö ¾ÊÀ¸¹Ç·Î ÄÄÆÄÀÏ ¿¡·¯·Î 󸮵ȴÙ. ŸÀÔÀÌ ºÒÀÏÄ¡ÇϹǷΠÀ߸øµÈ µ¿ÀÛÀ» ÄÄÆÄÀÏ Áß¿¡ Áï½Ã ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.