답변
http://www.sgi.com/tech/stl/List.html
목록은 이중 연결리스트이다. 즉, 순방향 및 역방향 탐색, 시작 또는 끝 또는 중간에 요소의 (상각 된) 상수 시간 삽입 및 제거를 모두 지원하는 시퀀스입니다. 목록은 삽입 및 접합 요소를 나열하는 반복자를 무효화하지 않는 중요한 속성이, 심지어 제거 당신이려고하는 경우에, 액세스에 관해서
을 제거하는 요소를 가리만을 반복자를 무효화하는 것이 가운데 어딘가에서 요소를 검색하면 선형 시간이 걸립니다. 하지만 일단 반복자가 있으면 일정한 시간에 액세스 할 수 있으며 다른 삽입이나 제거로 인해 무효화되지는 않습니다.
삽입물 은 std::list
에서 일정 시간 동안 작동합니다.
삽입하기 전에 삽입하려는 위치로 반복자를 가져와야합니다. 앞이나 뒤에 대해 이야기하지 않는 한 선형 시간 작업입니다.
std::list<>
에 단일 요소를 삽입하면 삽입 위치에 관계없이 일정한 시간이 걸립니다. std::list<>
은 본질적으로 정렬 된 컨테이너가 아니므로 새 요소를 삽입 할 위치를 정확하게 지정해야합니다. 당연히, 시간은 선형이다.
삽입 ("접합") 요소이 하나로 또 다른리스트에서 옮겼 [부] 서열 (즉 std::list<>::splice
법) (삽입 된 소자의 수에 선형) 일정 시간 또는 선형 시간 중 걸린다. std::list<>
경우, 구현은 선택의 여지가 있기 때문에 이러한 문제가 발생 중 하나
std::list<>::size
방법을 구현하고, 선형 시간에 std::list<>::splice
, 또는 (2) 구현 std::list<>::splice
방법을 구현하여 비용을 지불
상수 시간을 계산하고 선형 시간으로 std::list<>::size
을 구현하여이를 지불해야합니다.
두 가지 중 하나를 가질 수도 있지만 둘 다 가질 수는 없습니다. 특정 접근 방식을 따르는 결정은 구현에 달려 있습니다.
그것이 C++ 표준 23.2.2/(1)에 의해 보장된다
list
는 양방향 반복자를 지원 어디 시퀀스 내에 소거 동작을 일정 시간 삽입 가능하고 시퀀스의 일종 스토리지 관리가 자동으로 처리됩니다. 벡터 (23.2.4) 및 deques (23.2.1)와 달리 목록 요소에 대한 빠른 임의 액세스는 지원되지 않지만 많은 알고리즘에만 은 순차적 액세스가 필요합니다.이론적으로는 다른 방법으로 주위해야 심지어std::vector
종종 빠른std::list
보다 주로 실제로 데이터의 더 나은 지역에,
참고. 따라서 기본 순차 컨테이너는 std::vector
이어야합니다. 당신이 의심하는 경우
, 해당 컨테이너는 모든에서 중요 여부를 첫 번째 측정 (그 부분은 전체 시간의 2 %를 사용하는 경우, 코드 조각의도 열 번 속도를 증가에서 아무 소용) std::list
과 std::deque
으로 측정 값을 비교하여 선택하십시오.
+1 지역 및 측정 – Philipp
- 1. STL max_element의 복잡성
- 2. 프로그래머 정의 STL 목록 컨테이너 클래스
- 3. C++ STL 목록 클래스 메서드 정보 erase()
- 4. C++ stl 모음 또는 연결된 목록
- 5. 복잡성 파이썬
- 6. Perl의 복잡성?
- 7. 알고리즘의 복잡성
- 8. 자료 복잡성
- 9. C++에서 템플릿 복잡성 줄이기
- 10. 문자열 결합 및 복잡성?
- 11. 비교 정렬 알고리즘 복잡성
- 12. TreeMap - 검색 시간 복잡성
- 13. Concat()의 복잡성
- 14. HashSet 조회 복잡성?
- 15. 알고리즘 분석 (복잡성)
- 16. 플래시 : 'Sprite.contains'의 런타임 복잡성?
- 17. 재귀 계승 프로그램의 복잡성
- 18. 복잡성 (초급 질문)
- 19. HashMap 메소드의 시간 복잡성
- 20. 배열 공간 복잡성
- 21. GWT 웹 페이지 복잡성
- 22. 컴퓨팅 알고리즘의 복잡성 - 혼란
- 23. 기본 복잡성 질문 - 회선
- 24. Regex 치환의 복잡성
- 25. 피보나치 알고리즘의 시간 복잡성
- 26. 드루팔과 백엔드 복잡성
- 27. 갤럽 검색 시간 복잡성?
- 28. 프롤로그 프로그램의 복잡성?
- 29. 해시 소금의 복잡성
- 30. 존재의 복잡성 가중치 사이클
앞면도 일정합니다. – user382499
@ user382499 :'std :: list :: begin()'과'std :: list :: end()'는 둘 다 일정 시간 동작이다. 'push_front','push_back','pop_front','pop_back'에 대해서도 마찬가지입니다. –