profile-img
์ง€๋ฐ์ด์˜ ํ‹ฐ์Šคํ† ๋ฆฌ
images/slide-image

๋ชŒ?

 

~ ์ˆœํ™˜ ๋ฐ˜๋ณต์ž ~

for ๋ฌธ๊ณผ while๋ฌธ์œผ๋กœ ์‹ธ์ดํด์„ ๋Œ๋ ค๋ณด์•„์š”.. 

 

vector<int> v = {1, 2, 5, 7, 8};
vector<int> const_iterator iter = v.cbegin(); 
vector<int> const_iterator iterEnd = v.cend();

for(iter; iter != iterEnd; ++iter) //NULLPTR๊ฐ€ ์•„๋‹๋•Œ๊นŒ์ง€ ์‹ธ์ดํด
{
	cout << *iter <<endl;
}

while(iter != iterEnd) 
{
	cout << *iter << endl;
    ++iter;
}

 

์ž˜ํ–ˆ๋‚˜์š”..? ์‚ฌ์‹ค for๋ฌธ์—์„œ !=์„ ์“ฐ๋Š”๊ฑด ์•„์ฃผ ์œ„ํ—˜ํ•˜๋‹ค๊ตฌ ํ•ฉ๋‹ˆ๋‹ค.. 

while๋ฌธ์œผ๋กœ ์จ๋ณด๋Š” ์Šต๊ด€์„ ๊ธฐ๋ฅด์ž ! ์•„์ž์•„์ž ! 

 


 

๊ฑฐ๊พธ๋กœ ์‹ธ์ดํด์„ ๋Œ๋ ค๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ๋ ๊นŒ์š”??

iter ์„ v.cend() ์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ๋ฐ˜๋Œ€๋กœ ๋Œ๋ฆฌ๋ฉด ๋˜์ง€์•Š์„๊นŒ? ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ 

v.cend() function์€ null๊ฐ’์„ ๊ฐ€๋ฅดํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ํ• ์ˆ˜ ์—†์Œ !!!!

for(iter; iter != iterBegin; --iter) // DOES NOT WORK!

 

์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” Cycling in Reverse Order ์œผ๋กœ๋„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋”ฐ! 

vector<char>::reverse_iterator revIter = v.rbegin();

์ฐธ์‰ฝ์ ธ ใ…Žใ…Ž

 

๋งŒ์•ฝ์— const๋ฅผ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด 

vector<char>::const_reverse_iterator constRevIter = v.crbegin();
vector<char>::const_reverse_iterator constRevIterEnd = v.crend();
for(constRevIter; constRevIter != constRevIterEnd; ++constRevIter)
	cout << *constRevIter << endl;

์ด๋ ‡๊ฒŒ ๊ฐ„๋‹ค!  ์‚ฌ์‹ค์ƒ ๋’ค๋กœ(backwards)๋กœ ์›€์ง์ด๋Š” ๊ฑฐ์ง€๋งŒ, ++์„ ์จ์•ผํ•จ! ์™œ๋ƒ,., ์ด๊ฑด REVERSE๋‹ˆ๊นŒ.. 

 

 

~summary~

Predefined iterator Direction of ++  Actions Uses features
iterator forward read/write begin/end vector<char>::iterator iter = v.begin();
cosnt_iterator forward read cbegin/cend vector<char>::const_iterator constIter = v.cbegin();
reverse_iterator backward read/write rbegin/rend vector<char>::reverse_iterator revIter = v.rbegin();
const_reverse_iterator backward read crbegin/crend vector<char>::const_reverse_iterator constRevIter = v.crbegin();

 

๋ ใ…Žใ…Ž

'เซฎโ‚หถแต” แต• แต”หถโ‚Žแƒโ™ก/coding' Related Articles +