Jaki jest najszybszy sposób sprawdzenia, czy kontener unordered_map
zawiera element z określonym kluczem?unordered_map: która z nich jest szybsza find() lub count()?
Odpowiedz
Będą mieli o jednakowej wydajności. Powinieneś użyć algorytmu, który najlepiej wyraża to, co próbujesz zrobić.
Aby to rozwinąć, ogólnie count()
zostanie zaimplementowane przy użyciu find()
. Na przykład, w libcxx, count()
jest zaimplementowany jako return (find(__k) != end());
Myślę, że Find jest najlepszą opcją, nie trzeba iść dalej.
http://www.cplusplus.com/reference/unordered_map/unordered_map/find/
find()
i count()
są stosowane do wielu pojemników w C++.
Dla map, zestawów itp. Find zawsze będzie miał stały czas wykonania, ponieważ po prostu oblicza wartość skrótu i zwraca iterator do pierwszego znalezionego elementu (end()
, jeśli nie zostanie znaleziony).
count()
ma z kolei stały czas realizacji O (e), gdzie e to liczba przypadków, w których znaleziony klucz został znaleziony. W najgorszym przypadku jest to zbiór, gdzie wszyscy członkowie są takie same, więc count
może mieć złożoność O (n)
map
lub unordered_map
nie pozwalają na duplikatów, dlatego ich czas asymptotycznej prowadzony będzie taki sam.
Wybór zależy od semantyki w kodzie. Jeśli chcesz tylko sprawdzić, czy klucz istnieje, możesz po prostu użyć count
. Jeśli chcesz sprawdzić, czy klucz istnieje, i użyć jego wartości, przejdź do find
, ponieważ już masz iterator wskazujący na ten element.
- 1. Która jest szybsza, equalsIgnoreCase lub compareToIgnoreCase
- 2. Która pętla jest szybsza, kiedy lub dla?
- 3. jQuery: która jest szybsza w tym przypadku (.find) vs (.filter)
- 4. Porównanie pamięci, która jest szybsza?
- 5. Słownik Pythona kontra lista, która jest szybsza?
- 6. Jak korzystać z COUNT (*) z find ("list") w CakePHP 3?
- 7. Który z nich jest szybki, Klasa abstrakcyjna lub interfejs?
- 8. Zmienna zamiana zi bez zmiennej pomocniczej - która jest szybsza?
- 9. Standardowy wektor i tablica wzmocnienia: która jest szybsza?
- 10. element unordered_map jest usuwany
- 11. Czy mogę porównać kod IL, aby określić, która technika jest szybsza lub lepsza?
- 12. Jaka jest różnica między ajax i jquery, a która z nich jest lepsza?
- 13. Apache2: mod_wsgi lub mod_python, który z nich jest lepszy?
- 14. Który z nich jest lżejszy, JSON lub BSON?
- 15. Który z nich jest szybszy: skorelowane podzapytania lub dołącz?
- 16. Wireshark lub jedna z nich jest już uruchomiona
- 17. Który z nich jest łatwiejszy w użyciu? GCD lub NSOperation?
- 18. Czy jest szybsza implementacja TList?
- 19. Obiekt JSON z cytatami lub bez nich
- 20. Przenoszenie kluczy z unordered_map
- 21. Co to jest szybsza operacja, re.match/search lub str.find?
- 22. std :: unordered_map insert z podpowiedzią
- 23. Dlaczego akumulacja jest szybsza niż cykl prosty?
- 24. Która metoda działa lepiej: .Any() vs .Count()> 0?
- 25. Która metoda jest szybsza, ekspresowe: renderowanie po stronie serwera a renderowanie po stronie klienta
- 26. Szybsza alternatywa dla eval?
- 27. Dlaczego wektoryzacja jest szybsza niż pętle?
- 28. jest jquery .find zawsze przydatne?
- 29. Która jest lepsza, ExpectedException lub @Test (oczekiwane =
- 30. $ (...). Każda z nich nie jest funkcją.
'unordered_map' wie, że ma unikalne klucze, więc' count() 'zatrzyma się na pierwszym dopasowaniu (chyba że implementacja jest zepsuta, ale powinieneś założyć, że tak nie jest) –