본문 바로가기
C++ 200제/코딩 IT 정보

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

by vicddory 2017. 1. 14.

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 응용 (비추천)

댓글