00001 template<typename Iterator> 00002 Iterator _set_insert(Iterator it, Iterator it_end, 00003 typename 00004 iterator_traits<Iterator>::value_type const& x, 00005 bidirectional_iterator_tag const&) { 00006 Iterator it1 = it_end; ++it_end; 00007 Iterator it2 = it_end; 00008 *it1 = x; 00009 while(!(*it1 < *it2)) { 00010 swap(*it1, *it2); 00011 if(it1 == it) break; 00012 --it1; --it2; 00013 } 00014 return it_end; 00015 }