Можно ли использовать карту в качестве дерева? - PullRequest
4 голосов
/ 10 марта 2020

например. std::map<Item, std::vector<Item> >.

Может ли это служить в качестве "быстрой и грязной" древовидной структуры (с некоторыми вспомогательными функциями сверху и с учетом того, что less реализовано для Item), учитывая, что в std / boost их нет ?

Будет ли std::unordered_map лучше подходить / быть более полезным / полезным? это требует га sh вместо сравнения - что может быть сложнее реализовать.

Я вижу одну проблему, хотя, обнаружив, что родитель / владелец должен перебрать go всю карту (хотя это при необходимости лучше хранить в отдельной структуре) 1014 *

Ответы [ 2 ]

2 голосов
/ 10 марта 2020

Может ли карта использоваться в качестве дерева?

Ситуация обратная: std::map внутренне реализована с использованием дерева. Таким образом, дерево может (является) использоваться в качестве карты.

Ни карта, ни неупорядоченная карта не полезны для реализации общей древовидной структуры. Только если вы намерены использовать дерево в качестве карты, было бы полезно использовать эти структуры (потому что это карты, которые были желательны в этом сценарии)

0 голосов
/ 10 марта 2020

Вы можете абсолютно представить дерево таким образом; Хорошая ли идея в данной ситуации, полностью зависит от того, какие операции вам нужны, какие операции вам нужны, и каковы ваши требования к пространству.

(И, конечно, во многих приложениях ответом на все вышесказанное может быть «Мне все равно», и в этом случае любая реализация, вероятно, в порядке.)

...