find
또는 operator []
을 사용하여 std::map
요소에 액세스 할 때 성능에 차이가 있는지 아시나요?std :: map의 요소에 빠르게 액세스
하나는 iterator
을 반환하고 다른 하나는 const ref
을 개체에 반환합니다.
STL의 모든 장면 중에서 어느 것이 더 빠를까요?
find
또는 operator []
을 사용하여 std::map
요소에 액세스 할 때 성능에 차이가 있는지 아시나요?std :: map의 요소에 빠르게 액세스
하나는 iterator
을 반환하고 다른 하나는 const ref
을 개체에 반환합니다.
STL의 모든 장면 중에서 어느 것이 더 빠를까요?
존재하지 않는 키에 []를 사용하면 기본 요소가 삽입됩니다. 이 기본 요소는 맵 정의에 따라 다릅니다 (예 : int의 경우 0입니다).
찾기를 사용하면 "자동"삽입이 없으므로 존재하지 않는 키를 자주 검색하면 상당히 빠를 수 있습니다.
은 O (n)이다. operator []
은 O (1)입니다. 따라서 후자는 (일반적으로) 빠릅니다.
지도 구현에 따라 다릅니다. std :: map에 대한 요구 사항은 O (log (n))이며 find (연산자 []는 더 많거나 적은 find를 사용합니다). – Scharron
해시 맵과 맵을 혼동해야합니다. –
나는 그 연산자 []를 추가 할 것이고, 기본적으로 find를 호출 할 것이다. 요소가 존재하지 않으면 요소가 추가해야하는 위치를 사용합니다. 그것은 "그냥"요소 건설 비용. – Scharron
좋은 지적. 같은 것을하지 않는 두 가지 사이의 속도를 비교하는 것은 오도하는 경향이 있습니다. –