본문 바로가기

Language/C++ 그때그때 끄적끄적

[C++] Iterator 반복자

자료구조는 자료구조마다 각기 다른 형태를 띄고있습니다 때문에 우리는 해당 자료구조의 컨테이너에 접근할때 접근 방법이 조금씩 다릅니다 저는 지금까지 Iterator를 사용하지 않고 주로 사용하는 Vector와 List는 간단하게 Index로 접근하여 컨테이너의 요소들에 접근하곤했습니다 하지만 그외의 컨테이너에 접근할때 우리는 해당 자료구조의 구조를 다 파악하지않아도 간편하게 사용하기 위한 방법으로 Iterator(반복자)를 사용할 수 있다는것을 알게 되었습니다

 

 

iterator 선언과 반복문을 통한 순회

    vector<int> vecInt;
    vecInt.push_back(10);
    vecInt.push_back(104);
    vecInt.push_back(1011);
   
   vector<int>::iterator vecIter = vecInt.begin();
    
    for (vecIter = vecInt.begin(); vecIter != vecInt.end(); vecIter++)
    {
        cout << *vecIter << endl;
    }

 

해당 반복문의 조건부를 보면 vecIter != vecInt.end(); 부분이 증감 연산에 의해 마지막 부분값이 거짓이 되어 마지막 원소를 볼 수 없는것 아닌가 하는 의문이 있을 수 있습니다 하지만 end()는 마지막 원소가 아닌 마지막보다 하나더 뒤를 의미합니다.

cout << *vecInt.end() << endl; // error
cout << *(vecInt.end()-1) << endl; // 마지막 원소 출력

Vector의 삭제연산에서

vec.erase();는 iterator를 요구합니다 때문에 우리는 삭제 연산을 할 때 Iterator을 사용하는게 유용합니다

 

 

추가적으로 incapsulate까지 가능한 느낌인것 같습니다

'Language > C++ 그때그때 끄적끄적' 카테고리의 다른 글

[C++] range based for(범위 기반 for문)  (0) 2023.05.16
[C++] 문자열 나누기 spring split  (0) 2023.05.15
[C++]람다식이란  (0) 2022.05.11
[C++]Struct 와 Class  (0) 2022.01.18
[C++]typedef  (0) 2022.01.11