stl::map
은 정렬 된 맵이므로 정렬 된 데이터 세트를 삽입하는 것이 더 빠릅니까? 특별히 대규모 데이터 세트를 고려한다면?stl :: map에 삽입 된 삽입이 더 빠릅니까?
1
A
답변
3
물론 데이터 정렬.
#include <map>
#include <vector>
int main() {
std::vector<int> data { 0, 1, 2, 3, 4, 5 };
std::map<int, int> result;
// From: http://en.cppreference.com/w/cpp/container/map/insert
// Amortized constant if the insertion happens in the position just before
// the hint, logarithmic in the size of the container otherwise.
for(auto i : data)
result.insert(result.end(), { i, i});
}
1
예. Big O의 관점에서 N 요소를 하나씩 삽입하는 것은 O (N * logN)이며, 맵 (일반적으로 일종의 균형 이진 트리)은 O (N) 만 필요합니다.
GCC의 libstdC++ 구현을 참조로 사용할 수도 있습니다.
gcc/libstdc++-v3/include/bits/stl_map.h
관련 문제
- 1. 포인터가 stl :: map에 있음
- 2. 어느 것이 더 빠릅니까? STL 대기열 또는 STL 스택?
- 3. STL std :: map에 해당하는 MFC
- 4. std :: map에 내 삽입이 실패하는 이유는 무엇입니까? 내 헤더 파일에서
- 5. STL Map에 생성자 초기화 목록의 요소 추가?
- 6. 왜 링크 된 목록이 더 빠릅니까?
- 7. LinkedHashMap과 TreeMap이 더 빠릅니까?
- 8. 정적 기능이 더 빠릅니까?
- 9. 쿼리 된 sqlite의 행 수는 더 빠릅니까?
- 10. 입력 된 기능 언어가 더 빠릅니까?
- 11. 왜 벡터화가 더 빠릅니까
- 12. 어느 것이 더 빠릅니까?
- 13. 어떤 함수가 더 빠릅니까?
- 14. 튜플이나리스트가있는 string.join이 더 빠릅니까?
- 15. 어떤 선택자가 더 빠릅니까?
- 16. 어느 것이 더 빠릅니까?
- 17. JavaScript로드가 더 빠릅니까?
- 18. 이 jquery가 더 빠릅니까?
- 19. 어떤 코드가 더 빠릅니까?
- 20. 무엇이 더 빠릅니까? fifo
- 21. stl 삽입 반복기
- 22. STL 벡터에 삽입
- 23. std :: map에 대한 마지막 삽입 수정하기
- 24. 더 빠르게이 작업을 수행하는 방법이 더 빠릅니까?
- 25. MongoDB : 어느 것이 더 빠릅니까? findOne + 삽입 또는 upsert가 없으면?
- 26. 왜 Linq 방식이 더 빠릅니까
- 27. 불필요한 조건으로 코드가 더 빠릅니까?
- 28. std :: map에 사용자 정의 객체 삽입
- 29. 왜이 어셈블리 코드가 더 빠릅니까?
- 30. == 연산자가 std :: map에 정의되었습니다.
왜 사용해 보시지 않습니까? – NathanOliver
특정 구현에 따라 다르다고 생각합니다. 'map '은 보통 red-black tree 나 AVL tree 같은 트리 구조를 사용합니다. 정렬 된 시퀀스를 삽입하면 매번 리 밸런싱이 발생하지만 삽입 성능에 영향을 미치는 유일한 문제입니다. 즉, 재조정을 유발하거나 덜 자주 트리거하지 않는 마법 순서가있을 수 있습니다. 정렬 된 시퀀스 일 필요는 없습니다. –
@WhiZTiM : 성능의 두 번째 규칙 인 "단일 시스템에서만 측정 된 결과에 의존하지 마십시오." –