¿ª¹æÇ⠹ݺ¹ÀÚ´Â ¼øÈ¸ ¹æÇâÀÌ °Å²Ù·Î µÇ¾î ÀÖ´Â ¹Ýº¹ÀÚÀÌ´Ù. ¾ç¹æÇ⠹ݺ¹ÀÚ³ª ÀÓÀÇ Á¢±Ù ¹Ýº¹ÀÚ¿¡ ¾î´ðÅ͸¦ Àû¿ëÇÏ¿© ±¸ÇöµÇ¸ç ++, -- ¿¬»êÀÌ ¹Ý´ë ¹æÇâÀ¸·Î Á¤ÀǵǾî ÀÖ´Ù. °¢ ÄÁÅ×À̳ʴ ´ÙÀ½ µÎ °³ÀÇ ¿ª¹æÇ⠹ݺ¹ÀÚ Å¸ÀÔÀ» Á¦°øÇϹǷΠÀÌ Å¸ÀÔÀÇ ¹Ýº¹ÀÚ¸¦ ¼±¾ðÇϱ⸸ ÇÏ¸é µÈ´Ù. »ó¼ö, ºñ»ó¼ö ¹öÀüÀÌ µû·Î ÁغñµÇ¾î ÀÖ´Ù.
reverse_iterator
const_reverse_iterator
ÄÁÅ×À̳ʷκÎÅÍ ¿ª¹æÇ⠹ݺ¹ÀÚ¸¦ ¾òÀ» ¶§´Â rbegin, rend ¸â¹ö ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ¿ª¹æÇ⠹ݺ¹ÀÚ·Î ÄÁÅ×À̳ʸ¦ ¼øÈ¸ÇÏ¸é ³¡¿¡¼ºÎÅÍ ¾ÕÂÊÀ¸·Î ¼øÈ¸ÇÒ ¼ö ÀÖ´Ù. ÀÌ µÎ ¸â¹ö ÇÔ¼ö°¡ °¡¸®Å°´Â À§Ä¡´Â ´ÙÀ½°ú °°Àºµ¥ ´Ü¼øÈ÷ begin, endÀÇ ¸ÂÀºÆí ¹Ý´ëÂÊÀ» °¡¸®Å°´Â °ÍÀº ¾Æ´Ï´Ù.
¹üÀ§ÀÇ ¿øÄ¢¿¡ ÀÇÇØ ±¸°£ÀÇ Ã³À½Àº Æ÷ÇÔµÇ¸ç ³¡Àº Ç×»ó Á¦¿ÜµÇ¾î¾ß ÇϹǷΠrbegin ~ rend·Î ¿ª¹æÇâ ¼øÈ¸¸¦ ÇÏ·Á¸é rbeginÀº ³¡¿ä¼Ò¸¦ °¡¸®Å°°í rend´Â ù ¿ä¼Òº¸´Ù Çϳª ´õ ¾ÕÂÊÀ» °¡¸®ÄÑ¾ß ÇÑ´Ù. ¹°·Ð rendÀ§Ä¡´Â ½ÇÁ¦·Î ÄÁÅ×À̳ÊÀÇ ³»ºÎµµ ¾Æ´Ï¸ç ó¸® ´ë»ó¿¡µµ Æ÷ÇÔµÇÁö ¾Ê´Â´Ù. ´ÙÀ½ ¿¹Á¦´Â º¤Å͸¦ ¿ª¼øÀ¸·Î ¼øÈ¸ÇÏ¸ç ¿ä¼ÒµéÀ» Ãâ·ÂÇÑ´Ù.
¿¹ Á¦ : revit |
#include <iostream>
#include <vector>
using namespace std;
void main()
{
int ari[]={1,2,3,4,5};
vector<int> vi(&ari[0],&ari[5]);
vector<int>::reverse_iterator rit;
for (rit=vi.rbegin();rit!=vi.rend();rit++) {
printf("%d\n",*rit);
}
}
reverse_iterator ŸÀÔÀÇ rit¸¦ ¼±¾ðÇϰí rbeginÀ¸·Î ÃʱâÈÇÏ¸é º¤ÅÍÀÇ Á¦ÀÏ ³¡ ¿ä¼Ò¸¦ °¡¸®Å³ °ÍÀÌ´Ù. ÀÌ ¿ä¼Ò¸¦ Ãâ·ÂÇϰí rit¸¦ 1 Áõ°¡½Ã۸é ++ ¿¬»êÀÚ°¡ ¹Ýº¹ÀÚ¸¦ º¤ÅÍÀÇ ¼±µÎÂÊÀ¸·Î À̵¿½ÃŲ´Ù. ÀÌ °úÁ¤À» rend°¡ ¾Æ´Ò ¶§±îÁö, Áï ù ¿ä¼Òº¸´Ù ¾Õ¿¡ À̸£±â Á÷Àü±îÁö ¹Ýº¹ÇϹǷΠù ¹øÂ° ¿ä¼Ò¸¦ Ãâ·ÂÇÑ ÈÄ ·çÇÁ¸¦ Å»ÃâÇÏ°Ô µÈ´Ù. Ãâ·Â °á°ú´Â 5, 4, 3, 2, 1Àε¥ ´ÙÀ½Ã³·³ ¼øÈ¸ÇÏ´Â °Í°ú »ç½Ç»ó µ¿ÀÏÇÏ´Ù.
vector<int>::iterator it;
for (it=vi.end()-1;;it--) {
printf("%d\n",*it);
if (it==vi.begin()) break;
}
¼ø¹æÇ⠹ݺ¹ÀÚ¸¦ »ç¿ëÇÏ¿© Á÷Á¢ ¹Ý´ë·Î ¼øÈ¸Çß´Ù. À̶§ ½ÃÀÛ ÁöÁ¡Àº endº¸´Ù Çϳª ´õ ¾ÕÂÊÀ̾î¾ß Çϸç begin À§Ä¡µµ Ãâ·Â ´ë»ó¿¡ Æ÷ÇԵǹǷΠÀÏ´Ü Ãâ·ÂÇÑ ÈÄ begin¿¡ À̸£·¶À¸¸é ·çÇÁ Áß°£¿¡¼ Å»ÃâÇØ¾ß ÇÑ´Ù. ¼ø¹æÇ⠹ݺ¹Àڷεµ ¿ª¹æÇâ ¼øÈ¸°¡ °¡´ÉÇϱâ´Â ÇÏÁö¸¸ º¸´Ù½ÃÇÇ Á÷°üÀûÀÌÁö ¸øÇÏ°í ºÒÆíÇÏ´Ù.
¾Ë°í¸®Áò ÇÔ¼öµéÀº ±¸ÇöÀ» À§ÇØ Ç×»ó ¼ø¹æÇâ ¼øÈ¸¸¦ Çϵµ·Ï µÇ¾î Àִµ¥ ¹Ýº¹ÀÚ¸¦ À̵¿½Ã۱â À§Çؼ ´Ã»ó ++ ¿¬»êÀÚ¸¦ »ç¿ëÇÑ´Ù. ¿ª¹æÇ⠹ݺ¹ÀÚ¸¦ ¾Ë°í¸®ÁòÀ¸·Î Àü´ÞÇϸé ++ ¿¬»êÀÇ Àǹ̰¡ ¹Ù²î¹Ç·Î ¾Ë°í¸®ÁòÀÇ ¼øÈ¸ ¹æÇâÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. find´Â ¹Ýº¹ÀÚ¸¦ ¾ÕÀ¸·Î À̵¿ÇÏ¸ç °ªÀ» ãÁö¸¸ ¿ª¹æÇ⠹ݺ¹ÀÚ¸¦ Àü´ÞÇÏ¸é µÚÂÊÀ¸·Î À̵¿ÇϹǷΠ¿ª¹æÇâ¿¡¼ °Ë»öÇÒ ¼ö ÀÖ´Ù.
¿¹ Á¦ : revfind |
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void main()
{
int ari[]={6,2,9,2,7};
vector<int> vi(&ari[0],&ari[5]);
puts(find(vi.begin(),vi.end(),2)==vi.end() ? "¾ø´Ù.":"ÀÖ´Ù.");
puts(find(vi.rbegin(),vi.rend(),2)==vi.rend() ? "¾ø´Ù.":"ÀÖ´Ù.");
}
vi º¤ÅÍ¿¡ µÎ °³ÀÇ 2°¡ Æ÷ÇԵǾî Àִµ¥ ¼ø¹æÇâÀ¸·Î ãÀ» ¶§¿Í ¿ª¹æÇâÀ¸·Î ãÀ» ¶§ °Ë»öµÇ´Â °ªÀÌ ´Ù¸£´Ù. ÀÌ °æ¿ì´Â µÑ ´Ù °°Àº 2ÀÇ °ªÀ» °¡ÁöÁö¸¸ À§Ä¡¿¡ µû¶ó ¿ä¼ÒÀÇ Àǹ̰¡ ´Þ¶óÁú ¼öµµ ÀÖ´Ù. ¾î¶² ¿ä¼Ò°¡ ³¡¿¡¼ ¾îµðÂë¿¡ ÀÖ´ÂÁö¸¦ °Ë»öÇÏ°í ½ÍÀ» ¶§ ¿ª¹æÇ⠹ݺ¹ÀÚ¸¦ »ç¿ëÇÑ´Ù.
¿ª¹æÇ⠹ݺ¹ÀÚ¿¡´Â ¿ø·¡ÀÇ ¼ø¹æÇ⠹ݺ¹ÀÚ¸¦ ¸®ÅÏÇÏ´Â base ¸â¹ö ÇÔ¼ö°¡ Á¤ÀǵǾî ÀÖ´Ù. »ðÀÔ, »èÁ¦ ÇÔ¼öµéÀº ¿ª¹æÇ⠹ݺ¹ÀÚ¸¦ ¹Þ¾ÆµéÀÌÁö ¾Ê±â ¶§¹®¿¡ ¿ª¹æÇâ °Ë»öÇÑ À§Ä¡¿¡ ´ë°í ¾î¶² ÀÛ¾÷À» ÇÏ°í ½ÍÀ» ¶§´Â ¼ø¹æÇ⠹ݺ¹ÀÚ·Î ¹Ù²Ù¾î¾ß ÇÑ´Ù. ¶ÇÇÑ ¿ª¹æÇâ °Ë»ö ÈÄ¿¡ ´Ù½Ã ¼ø¹æÇâÀ¸·Î °Ë»öÇÏ°í ½ÍÀ» ¶§ base·Î ¾ðÁ¦µçÁö ¼ø¹æÇ⠹ݺ¹ÀÚ¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù. base·Î ±¸ÇÑ ¼ø¹æÇ⠹ݺ¹ÀÚ´Â ¿ª¹æÇ⠹ݺ¹ÀÚº¸´Ù Ç×»ó Çϳª ´õ Å« °ªÀ» °¡Áø´Ù.
ÀÌ·¸°Ô µÇ¾î ÀÖ´Â ÀÌÀ¯´Â ¼ø¹æÇ⠹ݺ¹ÀÚ°¡ ¿ª¹æÇ⠹ݺ¹ÀÚº¸´Ù ÇÑÄ ´õ ¿À¸¥ÂÊ¿¡ ÀÖÀ¸¸ç ÀÌ·¸°Ô ÇØ¾ß rbeginÀÇ base°¡ end°¡ µÇ±â ¶§¹®ÀÌ´Ù. ´ÙÀ½Àº ¿ª¹æÇâ °Ë»ö ÈÄ ´Ù½Ã ¼ø¹æÇâÀ¸·Î °Ë»öÇÑ´Ù.
¿¹ Á¦ : revbase |
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void main()
{
const char *str="c++ standard template library";
vector<char> vc(&str[0],&str[strlen(str)]);
vector<char>::reverse_iterator rit;
vector<char>::iterator bit,it;
rit=find(vc.rbegin(),vc.rend(),'t');
bit=rit.base();
it=find(bit,vc.end(),'a');
if (it!=vc.end()) {
printf("°Ë»ö °á°ú = %c\n",*it);
}
}
¹®ÀÚ¿ ³¡¿¡¼ºÎÅÍ 't'¸¦ ã±â À§ÇØ ¿ª¹æÇâ °Ë»öÀ» ÇßÀ¸¸ç 't' ÀÌÈÄ ÃÖÃÊ·Î ³ªÅ¸³ª´Â a¸¦ ã±â À§ÇØ ¼ø¹æÇ⠹ݺ¹ÀÚ bit¸¦ rit.base·Î ±¸ÇÏ¿© bitÀÌÈĺÎÅÍ °Ë»öÇß´Ù.