Earlier quoted context omitted.
> C++ templates are ugly, and the STL is very buggy and limited. Also no security and no performance. source ? at least for performance, it seems that there's not a lot of difference from your own link: https://raw.githubusercontent.com/rurban/ctl/master/docs/ima... and with the stl you don't have to call vec_int_free(&a); manually so I have a hard time seeing how this solution is more secure
I haven't written the STL critic parts yet. The testsuite contains a lot of hints. Major quirks: no proper allocation/resize upfront, when you know how big the resulting vector will be. Also not much help with bulk inserts. (Like a proper set join). The 3 STL's I tested massively overallocate. Unordered containers allow ranges, iterators from some to some, whilst they are unordered by default. This begs for bugs. Ran…
Also, all the interfaces of the STL being quite precise mean that
> Set and hashmaps have to use the slowest datastructures, because they considered better ones as too experimental. Hence no open hashmaps, just chained and rb trees. Their arguments of pointer and iterator stability is just an excuse after this decision. Everybody can work around that, and use open hashmaps and btree's just fine. > No sorted vectors, no small (stack) vectors.
are non-issues: in my own software I can swap std::unordered_map, std::vector, etc... trivially for other containers only by changing their type and adding an include. e.g. in my codebase I have some boost::small_vector, boost::static_vector, pod_vector, flat_set, flat_map, and 4/5 different hash maps which are all chosen specifically for their performance characteristics on various use cases.
In particular if it was C instead, I would have had to change every single call to add, remove, iterate, etc. every time.