• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

unorderd_map - zmiana funkcji haszującej

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
274 wizyt
pytanie zadane 9 października 2018 w C i C++ przez malina314 Nowicjusz (170 p.)
W C++ w STLu dostępny jest kontener o nazwie unorderd_map. Działa on szybciej od zwykłej mapy, bo haszuje klucze. Moje pytanie dotyczy właśnie haszowania. Jak zmienić domyślną funkcję haszującą na własną? Proszę o w miarę proste wytłumaczenie, bo mam z tym problem. Właściwie to nie wiem jak się za to zabrać, bo nigdy nie zmieniałem domyślnych funkcji w kontenerach STLowych, a całej mapy od zara nie będę pisał.

1 odpowiedź

+2 głosów
odpowiedź 9 października 2018 przez adrian17 Ekspert (328,540 p.)

Są dwa główne sposoby:

- możesz przekazać do szablonu własną funkcję hashującą (w ten sposób możesz przeciążyć domyślne zachowanie dla typów takich jak int)

- zdefiniować domyślny hasher dla własnego typu, dzięki czemu std::unordered_map będzie go używał automatycznie (bez konieczności podawania go w argumentach szablonu).

#include <unordered_map>

struct Struktura{
    int jakies_dane;
};

struct MyHash {
  std::size_t operator()(const int& k) const {
    return 123;
  }
};

namespace std {
  template<>
  struct hash<Struktura> {
    std::size_t operator()(const Struktura& k) const {
      return 123;
    }
  };
}

void f(){
    std::unordered_map<int, int> a; // po prostu
    std::unordered_map<int, int, MyHash> b; // custom hash
    std::unordered_map<Struktura, int> c; // hash dla Struktura uzyty automatycznie
}

 

Podobne pytania

0 głosów
1 odpowiedź 935 wizyt
pytanie zadane 5 września 2016 w Algorytmy przez Rafał Nowak Nowicjusz (190 p.)
0 głosów
3 odpowiedzi 702 wizyt
pytanie zadane 6 marca 2018 w Java przez andrut Użytkownik (870 p.)
0 głosów
1 odpowiedź 254 wizyt

90,401 zapytań

139,014 odpowiedzi

311,515 komentarzy

60,082 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...