~ ์ํ ๋ฐ๋ณต์ ~
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' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] STL ์์ฐจ ์ปจํ ์ด๋ STL Sequence Container (Vector, List) (0) | 2024.03.29 |
---|---|
[C++] ostream iterator ์ถ๋ ฅ์คํธ๋ฆผ ๋ฐ๋ณต์ + etc... (0) | 2024.03.29 |
[C++] iterator's function (0) | 2024.03.29 |
[C++] STL์ ๋ฐ๋ณต์ (Iterators) (0) | 2024.03.28 |
[C++] STL์ด๋? ( STL์ ์ ์์ ๊ตฌ์ฑ์์) (2) | 2024.03.27 |