my implement of STL