C++가 시작/종료/rbegin/찢어 실행이 일정한 시간에 대한 std::정,std::지도,etc.?

StackOverflow https://stackoverflow.com/questions/83640

  •  01-07-2019
  •  | 
  •  

문제

를 위한 데이터 형식과 같은 std::정 및 std::지도를 조회가 발생하에 로그 시간,구현을 유지하기 위해 필요한 시작하고 끝나는 반복기가?지에 액세스를 시작과 끝을 의미는 조회 발생할 수있는 로그 시간?

나는 항상 가정을 시작과 끝에 항상에서 발생하는 일정한 시간을,그러나 찾을 수 없습니다 모든 확인이 Josuttis.지금 나는 뭔가가 될 필요가 항문에 성능,내가 원하는지 확인하는데 기초입니다.

감사

도움이 되었습니까?

해결책

에서 일어나는 일정한 시간입니다.내가 찾는 페이지에 466ISO/IEC14882:2003 표준:

Table65-컨테이너 Requiments

니다.begin(); (일정한 복잡성)

니다.end(); (일정한 복잡성)

Table66-뒤집을 수 있는 컨테이너 요구사항

니다.rbegin(); (일정한 복잡성)

니다.찢어(); (일정한 복잡성)

다른 팁

예에 따라, http://www.cplusplus.com/reference/stl/, begin(),end()등은 모두 O(1).

에서는 C++표준,테이블 65 23.1(컨테이너 요구사항)목록 begin()및 end()으로 요구하는 일정한 시간입니다.는 경우에 당신의 구현을 위반하이 없는 부적합.

코드만 살펴보고,여기에 당신이 볼 수있는 반복기에는 std::지도에서 GNU libstdc++

std::map

당신이 볼 수하는 모든 종료 분쇄 하셨느니라...모든 구현에 일정한 시간입니다.

조심해야 해시 맵지만.begin()일정하지 않습니다.

Std::정

시작:일정,end:일정 rbegin:일정 찢어:일정

Std::지도

그들은 또한 일정한(그들 모두)

의심의 여지가 있는 경우,다만 확인 www.cplusplus.com

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top