Czerwone czarne drzewo z tym samym kluczem wielokrotnie: przechowuj kolekcje w węzłach lub przechowuj je jako wiele węzłów?
Najwyraźniej możesz to zrobić, ale ten pierwszy jest bardziej powszechny.
Dlaczego wybrałeś ten drugi i jak to działa?
Przeczytałem to:http://www.drdobbs.com/cpp/stls-red-black-trees/184410531; co sprawiło, że pomyślałem, że to zrobili. To mówi:
insert_always jest zmienną statusu, która mówi rb_tree, czy dozwolone jest wiele instancji tej samej wartości klucza. Ta zmienna jest ustawiana przez konstruktora i jest używana przez STL do rozróżnienia między zestawem a multisetem oraz między mapą a multimapą. set i map mogą mieć tylko jedno wystąpienie określonego klucza, podczas gdy multiset i multimap mogą mieć wiele wystąpień.
Chociaż teraz myślę, że to niekoniecznie oznacza to. Mogą nadal używać pojemników.
Myślę, że wszystkie węzły z tym samym kluczem musiałyby być w jednym rzędzie, ponieważ albo trzeba przechowywać wszystkie węzły z tym samym kluczem po prawej stronie, albo po lewej stronie. Jeśli więc zapiszesz równe węzły po prawej stronie i wstawisz 1000 1s i jeden 2, to w zasadzie będziesz miał połączoną listę, która zrujnowałaby właściwości czerwonego czarnego drzewa.
Czy to powód, dla którego nie mogę znaleźć wiele, że to tylko zły pomysł?