try to deep understand STL