C++가 시작/종료/rbegin/찢어 실행이 일정한 시간에 대한 std::정,std::지도,etc.?
문제
를 위한 데이터 형식과 같은 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++
당신이 볼 수하는 모든 종료 분쇄 하셨느니라...모든 구현에 일정한 시간입니다.
조심해야 해시 맵지만.begin()일정하지 않습니다.
제휴하지 않습니다 StackOverflow