Hacker News new | ask | show | jobs
by rafa1981 2366 days ago
Intrusive lists are very different beasts than lists by value.

There are less allocations involved (perf and points of failure), values can be inserted on different lists without new allocations, deletion is O(1), elements can be heterogeneous (different sizes and types), etc

etc

I seldomly use linked lists, but most of the time i prefer them to be intrusive. There of course are intrusive list implementations on C++.

2 comments

Same here.

Using non-intrusive linked lists just feels wrong once you've gotten used to the idea of embedding links, I find there are always better options.

Intrusive lists on the other hand is simply the best solution in some cases.

> values can be inserted on different lists without new allocations

Not multiple lists at the same time, surely...?

They were talking about taking a value off of one list and adding it to a different one, which doesn't require an allocation, but the entity is never on more than one list at a time in that scenario.

That said, you can add an entity onto multiple lists if it contains multiple nodes embedded inside. You have to keep track of which nodes are attached to which lists though (Which generally just means being consistent on which you use where). If you give them decent names, then it's not usually a problem, but it can sometimes get a little confusing if you're not careful.

Obviously not