컨테이너의 원소들을 순회(돌아다니는)할 수 있는 객체
반복자는 포인터와 유사하게 동작을 하지만 추가적으로 컨텐이너(vecotr,list,queque,set,map 등)와 알고리즘(검색,삭제,복사)을 하나로 동작가능하도록 하는 인터페이스 역할
강점 : 지정한 컨테이너 타입에 맞춰 순회하다 Iteroator가 알아서 메모리를 관리함, delete와 메모리 관리 작업 불필요
operator* : 현재 가리키고 있는 주소의 원소 값
operator++ : 다음 주소의 원소 값
operator-- : 이전 주소의 원소 값
operator = : 반복자를 할당
begin() : 컨테이너 원소의 첫번째 위치
(* 주의사항)
end() 컨테이너 원소 마지막 위치를 한번 지난 위치 ex) for(vector::iterator it=A.begin(); it!=A.end(); ++it) : end()가 아닐때 까지 조건문 수행, 즉, 마지막까지 조건 수행
Iterator 종류
1) container::iterator : 원소 읽기/쓰기 가능
2) container::const_iterator : 원소 읽기 전용
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector a;
for(int i = 0 ; i < 4; i ++)
a.push_back(i);
vector::iterator it; // 컨테이너<자료형>::iterator 변수명
for(it = a.begin(); it != a.end(); ++it) // end() 가 아닐때까지 반복문 수행
cout<<"vector_1:"<<*it<<endl;
cout<<endl;
it = a.begin();
for(int i = 0 ; i < a.size();i++)
cout<<"vector_2 :"<<it[i]<<endl;
it[2] = 10; // const_iterator가 아닌 iterator을 이용한 선언임으로 쓰기 가능
cout<<endl;
it = a.begin();
it += 2; // 포인터와 동일한 개념으로 + 연산자를 활용하여 주소를 이동 임의 접근 가능
cout<<"vector_3_0:"<<*it<<endl<<endl; // 3번째 인덱스로 주소가 이동된 원소로 출력
for(it = a.begin(); it != a.end(); ++it) // end() 가 아닐때까지 반복문 수행
cout<<"vector_3_1:"<<*it<<endl; // 비교를 위한 원소 정보 출력
cout<<endl;
/* const_iterator 를 사용하여 값을 쓰기 했을 경우 오류 발생
vector::const_iterator con_it; // 컨테이너<자료형>::iterator 변수명
con_it = a.begin();
for(int i = 0 ; i < a.size();i++)
con_it[i] = 1; // 'con_it' : const인 변수에 할당할 수 없습니다
*/
it = a.begin();
for(int i = 0 ; i < a.size();i++)
cout<<"vector_5_0 :"<<it[i]<<endl;
cout<<endl;
it += 2;
cout<<"vector_5_1 :"<<it[1]<<endl; // it[4] 정보에 접근
// cout<<"vector_5 :"<<it[2]<<endl; max가 4임으로 잘못된 접근으로 에러 발생
return 0;
}
참고 자료
https://eehoeskrap.tistory.com/263
https://blankspace-dev.tistory.com/348
https://eehoeskrap.tistory.com/263
Visual Studio 환경변수와 같은 Path설정 (0) | 2020.11.25 |
---|---|
Linux Windows 동적라이브러리(Dynamin Library) 둘다 혼용가능 설정 - dlsym,GetProcAddress (0) | 2020.11.25 |
[C,C++] 디버깅 (브레이크포인트)중단점 적중 문제 (0) | 2019.11.19 |
[C++] pair, make_pair [예제 소스] (0) | 2019.11.12 |
[C++] extern "C" 함수 Export (0) | 2019.11.07 |
댓글 영역