Daniel James 28f529100d Merge branch 'feature/simpler-data-structure' into develop
C++17 requires that unordered_map has the same type of node as
unordered_multimap, and that unordered_set has the same type of node as
unordered_multiset. This didn't seem particularly useful to me and
contradicts the old implementation which had different nodes, I put a
lot of effort into trying to abstract out the difference and make it
selectable using a macro, so that the old implementation would still by
available for anyone who doesn't care about strict compatibility.

But I think that was a mistake, it was making things too complicated and
for too little gain. The default would still be inefficient containers
for equivalent keys, and using the macro could lead to problems down the
line.

So I've switched to using a much simpler implementation which just marks
the first node in a group of equivalent nodes. This isn't as fast when
there are a lot of elements with equivalent keys - it can't skip to the
end of a group of nodes, but at least it avoids having to do a lot of
potentially expensive comparisons.

It's also a lot closer to the intent of the standard, even if I disagree
with that intent.
2017-04-27 18:22:53 +01:00
2017-04-25 21:14:11 +01:00
2014-06-16 22:43:54 +01:00
2017-02-19 13:05:17 +00:00
2014-01-26 13:44:38 +00:00
2017-04-27 18:22:43 +01:00
Description
Mirrored via gitea-mirror
BSL-1.0 28 MiB
Languages
C++ 98.6%
Python 0.8%
CMake 0.5%