Contour< T > Node1 Contour< T > + Contour() + ~Contour() + ranges() + ranges() + find() + name() + Write() + dir() Node2 std::vector< std::pair < double, T * > > Node2->Node1 Node3 T Node3->Node2 +elements Node4 TIDDirectory + TIDDirectory() + ~TIDDirectory() + push() + pop() + Write() + pwd() + cwd() + disable() + restore() + name() # chop() Node4->Node1 -mdir Node5 TDirectory Node5->Node4 #mDir #mPop Node6 std::string Node6->Node1 -mname Node6->Node4 #mname Node7 std::basic_string< char > Node7->Node6