C++ STL 반복자 (Iterators)

2021. 3. 26. 15:22·C++/Library

STL 반복자 (Iterators)

  • STL 컨테이너의 멤버들에 접근할 때 공통적인 방법으로 접근할 수 있도록 해주는 것이다.

  • iterator와 const_iterator는 사용할 때 크게 차이가 없는 듯하다.

  • 타이핑이 귀찮아서 보통 auto 키워드를 많이 사용하는 것 같다.

  • end() 함수는 맨 마지막 원소의 다음 주소를 가리킨다.

    • STL의 algorithm 함수들이 iterator로 first와 last를 받을 경우(처음과 끝), 마지막은 보통 end()가 오는 것으로 생각하여 포함시키지 않는다.

      즉 [first, last)라고 생각하면 된다.

      • 참고 : https://modoocode.com/256

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
'C++/Library' 카테고리의 다른 글
  • C++ string
  • C++ STL 알고리즘 (Algorithms)
  • C++ multimap
  • C++ map
Caniro
Caniro
  • Caniro
    Minimalism
    Caniro
  • 전체
    오늘
    어제
    • 분류 전체보기 (317)
      • Algorithm (13)
        • 알기 쉬운 알고리즘 (10)
        • Search (1)
        • Sort (2)
      • Arduino (0)
      • C++ (185)
        • Class (46)
        • Exception (6)
        • Library (51)
        • Overloading (10)
        • SmartPointer (5)
        • Syntax (33)
        • TBC++ (23)
        • Templates (9)
        • VisualStudio (2)
      • Embedded (1)
      • Git (4)
      • Java (5)
      • Linux (16)
        • Error (1)
        • Linux Structure (11)
      • MacOS (7)
      • OS (1)
        • Concurrency (1)
      • Python (21)
        • Class (1)
        • Function (2)
        • Syntax (17)
      • Raspberrypi (9)
      • Review (1)
      • Utility (12)
        • VSCode (5)
        • VirtualBox (3)
      • Web (8)
        • Nginx (1)
        • React (3)
        • Django (1)
      • Windows (20)
        • Registry (3)
        • WSL (1)
        • DeviceDriver (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    spring
    EXCLUDE
    SunOS 5.1
    Windows 11
    mspaint
    Workspace
    KakaoTalk
    윈도우 명령어
    그림판
    로지텍 마우스 제스처
    스프링
    citrix workspace
    백기선
    dism
    SFC
    vscode
    윈도우
    제외
    logi options
    알림
    Solaris 10
    맥북 카카오톡 알림 안뜸
    java
    시스템 복구
    MacOS
    스프링 프레임워크 핵심 기술
    unix
    windows
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Caniro
C++ STL 반복자 (Iterators)
상단으로

티스토리툴바