Are you criticizing the separation of m_sparseIds and m_items in this article? Could you give some more detail as to why you see this as a problem?
The only performance issue I see with having these separate is what the author describes as Consideration #2: you have to do completely separate read for the indirection which may incur an additional cache miss. But this is the cost of keeping the dense set dense and the handles constant.
Is there another issue I'm overlooking? Maybe I misunderstand you, as this structure does use int indexes (both for the free lists and to locate objects in the other array), and I don't know what you mean by "I know people like to make the tree just be another node"
The only performance issue I see with having these separate is what the author describes as Consideration #2: you have to do completely separate read for the indirection which may incur an additional cache miss. But this is the cost of keeping the dense set dense and the handles constant.
Is there another issue I'm overlooking? Maybe I misunderstand you, as this structure does use int indexes (both for the free lists and to locate objects in the other array), and I don't know what you mean by "I know people like to make the tree just be another node"