티스토리 뷰
목차
반응형
C++ List index 랜덤 접근, lterator advance next 응용 (비추천)
advance 함수를 이용해 C++ List index에 접근합니다. 그리고 해당 데이터를 복사해 가져오는 건데 ... 별로 좋아 보이진 않는군요. 저런 루틴이 반복적으로 돈다면 ... 아우... 끔찍합니다. 정말 급하디급할 때 잠깐 써먹기엔 좋겠네요.
참고로, .size() 함수는 매번 컨테이너를 순회하며 크기를 세다 보니 O(n)의 속도가 나옵니다. 그러니, 커다란 컨테이너에서 size()를 호출하는 함수가 있다면 당장 지우세요.
[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 응용 (비추천)
반응형