C++/Library
2021. 3. 26. 15:22
STL 반복자 (Iterators)
STL 컨테이너의 멤버들에 접근할 때 공통적인 방법으로 접근할 수 있도록 해주는 것이다.
iterator
와const_iterator
는 사용할 때 크게 차이가 없는 듯하다.타이핑이 귀찮아서 보통
auto
키워드를 많이 사용하는 것 같다.end()
함수는 맨 마지막 원소의 다음 주소를 가리킨다.STL의
algorithm
함수들이 iterator로first
와last
를 받을 경우(처음과 끝), 마지막은 보통end()
가 오는 것으로 생각하여 포함시키지 않는다.즉
[first, last)
라고 생각하면 된다.
vector 예제
원소를 전부 순회하려면
container.begin()
부터container.end()
전까지 반복자를 통해 돌면 된다.#include <iostream> #include <vector> int main() { using namespace std; vector<int> container; for (int i = 0; i < 10; ++i) container.push_back(i); vector<int>::const_iterator itr; itr = container.begin(); while (itr != container.end()) { cout << *itr << ' '; ++itr; } cout << '\n'; } /* stdout stderr 0 1 2 3 4 5 6 7 8 9 */
간단하게
auto
로 반복하는 예제#include <iostream> #include <vector> int main() { using namespace std; vector<int> container; for (int i = 0; i < 10; ++i) container.push_back(i); for (auto itr = container.begin(); itr != container.end(); ++itr) cout << *itr << ' '; cout << '\n'; for (auto& e : container) cout << e << ' '; cout << '\n'; } /* stdout stderr 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 */
list 예제
문법은
vector
와 비슷하다.#include <iostream> #include <list> int main() { using namespace std; list<int> container; for (int i = 0; i < 10; ++i) container.push_back(i); for (auto itr = container.begin(); itr != container.end(); ++itr) cout << *itr << ' '; cout << '\n'; for (auto& e : container) cout << e << ' '; cout << '\n'; } /* stdout stderr 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 */
set 예제
#include <iostream>
#include <set>
int main()
{
using namespace std;
set<int> container;
for (int i = 0; i < 10; ++i)
container.insert(i);
for (auto itr = container.begin(); itr != container.end(); ++itr)
cout << *itr << ' ';
cout << '\n';
for (auto& e : container)
cout << e << ' ';
cout << '\n';
}
/* stdout stderr
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
*/
map 예제
#include <iostream>
#include <map>
int main()
{
using namespace std;
map<int, char> container;
for (int i = 0; i < 10; ++i)
container.insert(make_pair(i, char(i + 65)));
for (auto itr = container.begin(); itr != container.end(); ++itr)
cout << itr->first << ' ' << itr->second << '\n';
cout << '\n';
for (auto& e : container)
cout << e.first << ' ' << e.second << '\n';
cout << '\n';
}
/* stdout stderr
0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
8 I
9 J
0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
8 I
9 J
*/
'C++ > Library' 카테고리의 다른 글
C++ string (0) | 2021.03.26 |
---|---|
C++ STL 알고리즘 (Algorithms) (0) | 2021.03.26 |
C++ multimap (0) | 2021.03.26 |
C++ map (0) | 2021.03.26 |
C++ multiset (0) | 2021.03.26 |