(C++ STL : iterator-1) iterator basic

Posted by : at

Category : Cpp


#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> s = { 1, 2, 3, 4, 5 };

    // list<int>::iterator p = s.begin();
    // auto p = s.begin();
    auto p = begin(s);      // 이 구조가 제일 좋음 - C++11
    // 배열에도 먹히기 때문이다.

    int n = size(s);

    // 이거 주의
    auto p2 = end(s);
    *p2 = 10;       // error - end는 마지막 요소가 아니라 마지막 다음 요소임을 기억하자.
}

주의할 점

#include <iostream>
#include <list>
#include <vector>
using namespace std;

int main()
{
    vector<int> v = {1,2,3,4,5};

    auto p = begin(v);

    v.resize(100);      // 버퍼 재할당

    cout << *p << endl;     // error - 버퍼가 재할당되며 무효화 된다.
}

참고, list 내용확인

#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> s1;

    if(s1.empty()) {}       // 요소가 비어있는지 확인
}

배열에서 x, list로 복사가 가능

#include <iostream>
#include <list>
#include <algorithm>
using namespace std;

int main()
{
    int x[5] = {1,2,3,4,5};
    int y[5] = {0,0,0,0,0};

    list<int> s2 = {0,0,0,0,0};

    copy(x, x+5, y);
    copy(x, x+5, begin(s2));

    for( auto& h : y)
        cout << h << ", ";

    for( auto& h : s2)
        cout << h << ", ";
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links