I actually enjoy rolling my own implementations every now and then, depending on what needs to be done.

Implementations given to you by, for instance, the standard template library, are written to be as general as possible to fit as many needs as possible. Generality often comes with a cost, and there is a chance that you might be able to write something that is more specific to your problem, and gain a performance boost. Be it lowered memory usage or simply "faster code".
There is also the enjoyment of writing things yourself and beating a complex task. If we never reinvented the wheel, how could we ever come up with something better?

That said, the advantages of sticking to either the STL or any other large cross-platform library such as boost is that they are well-tested, well-designed, cross-platform implementations. It makes it easier for other developers to read and understand your code.

Is this project of yours a work-related project or is it something you are doing on your free time? I would usually avoid writing my own implementations of what already exists in STL (or .NET if its that kind of project) on projects at work.