none
STL: 如何在set上使用inserter RRS feed

  • 问题

  • 读入一行数字存放在容器中(vector等)我经常用
    copy( istream_iterator<int>(stream> istream_iterator<int>(), back_inserter(vector) );
    现在容器是set,没有push_back,只用insert
    但查inserter函数原型是:
    insert_iterator<Container> inserter(
          Container& _Cont,
          Iterator _It
          );
    要指明插入位置。
    但set::insert不能指明插入位置的,请问如何解决?
    2010年3月19日 13:26

答案

  • 首先set是关联型容器。不像vector,list,dqueue是顺序型容器。不能指定位置插入。

    set只是一个wrapper,里面是通过红黑树,或者Hash实现的。每次插入或删除元素都能够保证元素按照一定规则排序。将一个元素插入到红黑树,是要经过多次旋转算法的。如果硬要插入则会破坏内部结构。所以不支持指定插入的位置。


    麻烦把正确答案设为解答。
    2010年3月24日 2:29
    版主