Używam zewnętrznej biblioteki sieciowej, która zwraca niektóre magiczne struktury reprezentujące otwarte gniazda, a dokumenty mówią, że podczas wstawiania ich do kontenerów STL, powinny być porównywane przy użyciu std::owner_less
.C++ 11 unordered_set z std :: owner_less-like hashing
std::map<MagicStructure, std::shared_ptr<Client>, std::owner_less<MagicStructure>> sockets;
Jednak zamiast tego chciałbym użyć unordered_map
. Jak mogę to zrobić? std::owner_less
to komparator i nie ma sensu na mapie skrótu. Kopanie w kodzie źródłowym, MagicStructure
wydaje się być typedef dla std::shared_ptr
.
To może być oryginalne pominięcie normy. Potrzebowalibyśmy czegoś takiego jak 'owner_equal' i' owner_hash'; ten ostatni może być hashem adresu bloku kontrolnego. –
Można spojrzeć na kod źródłowy i sprawdzić, czy ustawiono deleter, a jeśli tak, jaki typ. Następnie spróbuj 'get_deleter'. Być może 'deleter' może być użyty jako proxy dla" właściciela ". – Yakk