Wpis z mikrobloga

#programowanie #cpp
http://www.cplusplus.com/reference/unordered_map/unordered_map/

Hash

A unary function object type that takes an object of type key type as argument and returns a unique value of type sizet based on it. This can either be a class implementing a function call operator or a pointer to a function (see constructor for an example). This defaults to hash, which returns a hash value with a probability of collision approaching 1.0/std::numericlimits::max().

Co to znaczy, jakiej kolizji, dlaczego i kiedy mam się tym przejmować?
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Capt_S: mapa hashująca działa tak, że ma pod spodem tablicę elementów, i jak potrzebujesz wstawić pod indeks "ALA MA KOTA" wartość "Lorem Ipsum" to liczy hasza dla tego klucza "ALA MA KOTA" - wychodzi np 997, i wstawia pod indeks 997.

Potem chcesz wstawić pod indeks "JP2GMD" wartość "Serio Serio" - więc liczysz hasza dla "JP2GMD" - wychodzi np 1234 - wstawiasz pod ten indeks "Serio Serio".

Kolizja jest wtedy, jak chcesz
  • Odpowiedz
@tell_me_more: ah, bo ja tu za @MamCieNaHita już chciałem tworzyć vector z wartościami i się do niego odnosić, ale jeżeli mówisz, że to działa tak czy siak, a po prostu jest wolniejsze to sobie to daruję. Bałem się wyjątków. Dzięki. :)
  • Odpowiedz
generalnie to po prostu mam funkcję która zapisuje błąd do pliku, ale ze względu na asynchroniczną naturę mojego kodu, dodałem oczekiwanie na podstawie statycznego boola... ale plików jest kilka, a funkcja jedna więc chcę wiedzieć jaki to plik żeby nie czekać aż zwolnią się wszystkie.
  • Odpowiedz
@tell_me_more: mam na dysku pliki z których korzystają różne funkcje. Piszę funkcję "otwórz plik(fileName)" i jeżeli ten plik jest zajęty to czekam aż zostanie zamknięty:

static bool GUARDED = false;

co_await
  • Odpowiedz
@tell_me_more: oj... czyli zwolnienie blokady dać jako osobną funkcję, przy zamykaniu pliku? Da się to jakoś zrobić, że będzie zwalniać automatycznie przy wyjściu jakiegoś pointera ze scope czy coś takiego?
  • Odpowiedz