Używam unordered_map z gnu ++ 0x do przechowywania ogromnej ilości danych. Chcę wstępnie przydzielić przestrzeń dla dużej liczby elementów, ponieważ mogę związać całkowitą wykorzystaną przestrzeń.Wstępne przydzielanie segmentów w C++ unordered_map
Co chciałbym być w stanie zrobić to zadzwonić:
std::unordered_map m;
m.resize(pow(2,x));
gdzie x jest znany.
unordered_map nie obsługuje tego. Wolałbym raczej użyć unordered_map, jeśli to możliwe, ponieważ ostatecznie stanie się częścią standardu.
Niektóre inne ograniczenia:
potrzebują niezawodnych O (1) dostęp i mutacji mapy. Pożądane funkcje mieszające i porównawcze są już niestandardowe i nieco droższe. Mutacja O (log n) (jak w przypadku std :: map) jest zbyt droga.
-> Kosztowne hash i porównanie również powodują, że wzrost oparty na amortyzacji jest zbyt drogi. Każda dodatkowa wstawka wymaga operacji O (n) z tych funkcji, co powoduje dodatkowy kwadratowy termin w czasie działania algorytmu, ponieważ wymagania dotyczące wykładniczej pamięci masowej wymagają przyrostów O (n).
Używasz podpowiedzi, tak jakby była w: iterator std :: set :: insert (wskazówka iteratora, const value_type & value); http://en.cppreference.com/w/cpp/container/set/insert, wygląda nieprawidłowo. –