I needed data structures for a variety of problems, requiring speed for one or more of insertion to front, insertion to middle, searching, random-access, and copying. I needed them to be coded in C++, and templated to fit any data type.
For quick insertion and deletion to front and back, I developed two different stack implementations. The first used std::vector, but I found it to be too slow, so I coded a linked list implementation. However, at big sizes, my linked list was too slow for insertion and access at random indices, so I developed a binary search tree. This tree implemented binary searching, and auto sorting. Continuing with this idea, for even faster speed, I wrote a simple hash function, and used it to created a hash table. My hash table implements my prior linked list class for collision handling. All of my data structures are templated, and have full rule of three implementation and relevant operator overloads.