I have replaced pieces of C++ standard library quite a few times.
std::list calls malloc/free for every node instead of a bunch of them, expensive. Also they are doubly linked, for some applications a single-linked lists fit better.
std::vector<bool> lacks data() method, makes serializing/deserializing them prohibitively expensive.
Even something as simple as std::min / std::max for float and double types aren't using the correct implementation on AMD64, which is a single instruction like _mm_min_ss / _mm_max_sd.
std::list calls malloc/free for every node instead of a bunch of them, expensive. Also they are doubly linked, for some applications a single-linked lists fit better.
std::vector<bool> lacks data() method, makes serializing/deserializing them prohibitively expensive.
Even something as simple as std::min / std::max for float and double types aren't using the correct implementation on AMD64, which is a single instruction like _mm_min_ss / _mm_max_sd.