반응형
Notice
Recent Posts
Recent Comments
Link
DNF LOVE
c++ 문법> 반복자 Iterator(Vector를 사용하여 예제) 본문
반응형
C++에서는 반복자를 제공하는데, 이를 사용하면 컨테이너에 저장된 원소를 순회하고 접근하여 효과적으로 자료를 접근할 수 있다. 포인터와 비슷한 개념이지만 이는 컨테이너(Vector, dequeue, list, string 등)
이 반복자 덕분에 특정 컨테이너에 종속적이지 않게 언제든지 컨테이너와 결합하여 동작할 수 있다.
반복자는 * 연산자를 사용하여 컨테이너 내부의 원소를 가리키고 접근할 수 있어야 하며,
++, != == 등의 이항연산자를 사용하여 다음 원소로 이동하고 컨테이너의 모든 원소를 순회할 수 있어야 한다.
1. 선언
vector<int>::iterator iter; // vector 반복자 iter 선언
2. 초기화
// vector 반복자 iter는 v의 시작점을 가리킴
iter = v.begin();
3. 임의접근
cout << iter[1] << endl;
4. 연산 사용
iter += 5; // += 연산 사용
cout << *iter << endl;
5. vector의 순방향
for (iter = v.begin(); iter != v.end(); iter++) {
cout << *iter << endl;
}
** 양방향 반복자 : list, set, multiset, map, multimap
** 임의 접근 반복자(+, -, +=, -=, []연산 가능) : vector, deque
6. 전체 코드
#include "pch.h"
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
vector<int> v;
for (int i = 0; i < 7; i++) {
v.push_back(10 * i);
}
vector<int>::iterator iter;
// vector 반복자 iter는 v의 시작점을 가리킴
iter = v.begin();
cout << &iter << endl;
cout << *iter << endl;
// 임의 접근
cout << iter[1] << endl;
iter += 2; // += 연산 사용
cout << &iter << endl;
cout << *iter << endl;
// 반복
for (iter = v.begin(); iter != v.end(); iter++) {
cout << *iter << endl;
}
return 0;
}
여기서 유의해야할 점은, 임의 접근은 인덱스를 통해 접근하여 해당 값을 리턴하는 거지, iter가 가리키는 값을 바꾼다는 것은 아니다.
접근하는 위치를 바꾸려면 이항연산을 사용하면 된다.
반응형
'Programming > C++' 카테고리의 다른 글
[C++문법] Class, 추상 클래스, 인터페이스 상속 등 사용하기 (0) | 2019.10.23 |
---|---|
[C++문법] 생성자와 소멸자 그리고 접근자와 getter, setter 소멸자 그리고 접근자와 getter, setter 함수 (0) | 2019.10.23 |
C++> STL(Standard Template Libary) Contains (0) | 2019.10.23 |
C++ STL> Vector Container 에 대해 알아보자.(2차원 vector 사용) (0) | 2019.10.23 |
C++문법> STL의 string에 대해 알아보자. (string과 char 배열과의 차이) (0) | 2019.10.23 |