Często skuteczniej jest używać posortowanego std::vector
zamiast std::set
. Czy ktoś zna bibliotekę klasy sorted_vector
, która zasadniczo ma podobny interfejs do std::set
, ale wstawia elementy do posortowanego wektora (tak, że nie ma żadnych duplikatów), używa wyszukiwania binarnego do elementów find
itd.?Czy istnieje klasa sorted_vector, która obsługuje funkcję insert() itd.?
Wiem, że nie jest trudno napisać, ale prawdopodobnie lepiej nie marnować czasu i wykorzystać istniejącą implementację.
Aktualizacja: Powodem użyć sortowania wektor zamiast zestawu wynosi: Jeśli masz setki tysięcy małych zestawów, które zawierają tylko 10 lub tak członków każda, to jest więcej pamięci efektywne po prostu użyć posortowane wektory zamiast.
Czy mógłbyś być bardziej szczegółowy o tym, co w std :: set nie jest wystarczająco wydajne? – KillianDS
Jeśli masz setki tysięcy małych zestawów, które zawierają tylko około 10 elementów każdy, to zamiast oszczędzać pamięć, wystarczy użyć posortowanych wektorów. – Frank
Nie sądzę, że istnieje gotowa klasa.Możesz napisać własną lub użyć 'lower_bound()' do wstawienia i 'binary_search()' do wyszukiwania. – doublep