티스토리 뷰

목차

    반응형

    C++ List index 랜덤 접근, lterator advance next 응용 (비추천)


    advance 함수를 이용해 C++ List index에 접근합니다. 그리고 해당 데이터를 복사해 가져오는 건데 ... 별로 좋아 보이진 않는군요. 저런 루틴이 반복적으로 돈다면 ... 아우... 끔찍합니다. 정말 급하디급할 때 잠깐 써먹기엔 좋겠네요.


    참고로, .size() 함수는 매번 컨테이너를 순회하며 크기를 세다 보니 O(n)의 속도가 나옵니다. 그러니, 커다란 컨테이너에서 size()를 호출하는 함수가 있다면 당장 지우세요.


    C++ List 랜덤 요소[C++ List index 랜덤 접근, lterator advance next 응용 (비추천)]


    c++11 forward_list는 이점 때문에 size() 함수를 아예 제거했습니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    std::list<Object> l;
    // add elements to list 'l'...
     
    unsigned N = /* index of the element you want to retrieve */;
    if (l.size() > N)
    {
        std::list<Object>::iterator it = l.begin();
        std::advance(it, N);
        // 'it' points to the element at index 'N'
    }
     
    ....
    ....
    if (l.size() > N)
    {
        std::list<Object>::iterator it = std::next(l.begin(), N);
    }
     
    cs


    위의 C++ List index 랜덤 접근 코드는 문제가 많습니다. 왜 많은지를 아는 것도 중요하겠죠.

    어쨌든, 위 소스는 쓰지 마세요. 정 급할 때 잠깐 쓰세요.


    참조 - How to get a certain element in a list, given the position? [클릭]

    C++ List index 랜덤 접근, lterator advance next 응용 (비추천)

    반응형