On Wednesday, 21 October 2015 at 16:25:19 UTC, Jonathan M Davis
wrote:
My experience with immutable containers is that their
performance is trash precisely because you can't mutate them.
Well, in context of concurrency immutable containers compete with
concurrent containers, not with mutable single-threaded ones.
On Wednesday, 21 October 2015 at 14:06:43 UTC, Jonathan M Davis
wrote:
3. Eager value containers.
_Maybe_ this makes sense for specific container types, but in
general, it's a horrible idea IMHO. Almost all containers
involve allocating something on the heap internally, so the
fact that they're treated as values doesn't avoid heap
allocations, and reference-counting reference containers solves
the problem of the containers living past the end of the
lifetime of whatever owns them. And having value type
containers is incredibly error-prone - both from an efficiency
standpoint and correctness standpoint.
I suppose stl containers are value types because everything is
value type in C++, they're just consistent. And then you have 3
or so ways to create a value type and 6 ways to pass it around by
reference, and you choose what you want.