DEV Community

Seongcheol Jeon
Seongcheol Jeon

Posted on

[C++] const 키워드와 반복자

  • vector::iterator
  • vector::const_iterator
  • const vector::iterator
  • const vector::const_iterator

위의 반복자들을 비교 설명한다.

#include <iostream>
#include <vector>

using namespace std;


int main()
{
    vector<int> v;

    int arr[5] = { 10, 20, 30, 40, 50 };

    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    v.push_back(50);

    vector<int>::iterator iter = v.begin();
    // iter는 p처럼 동작
    int* p = arr;
    cout << *iter << ", " << *p << endl; 

    vector<int>::const_iterator citer = v.begin();
    // citer는 cp처럼 동작
    const int* cp = arr;
    cout << *citer << ", " << *cp << endl; 

    const vector<int>::iterator iter_const = v.begin();
    // iter_const는 p_const처럼 동작
    int* const p_const = arr;
    cout << *iter_const << ", " << *p_const << endl; 

    const vector<int>::const_iterator citer_const = v.begin();
    // citer_const는 cp_const처럼 동작
    const int* const cp_const = arr; 
    cout << *citer_const << ", " << *cp_const << endl;  

    return 0;
}
Enter fullscreen mode Exit fullscreen mode
  • vector::iterator iter;
    • iter는 다음 원소로 이동 가능하고 원소의 변경이 가능한 반복자이다.
  • vector::const_iterator citer;
    • citer는 다음 원소로 이동 가능하고 원소의 변경이 불가능한 반복자이다.
  • const vector::iterator iter_const;
    • iter_const는 다음 원소로 이동이 불가능하고 원소의 변경이 가능한 반복자이다.
  • const vector::const_iterator citer_const;
    • citer_const는 다음 원소로 이동이 불가능하며 원소의 변경이 불가능한 반복자이다.

포인터와 연결해 보면, 어렵지 않게 이해할 수 있다. 사실 iteratorconst_iterator만을 주로 사용하므로 이 두 반복자만 알고 있어도 된다.

Top comments (0)