Inserters for STL stack and priority_queue

后端 未结 2 1800
攒了一身酷
攒了一身酷 2020-12-17 19:49

std::vector, std::list and std::deque have std::back_inserter, and std::set has std::inserter.<

2条回答
  •  悲&欢浪女
    2020-12-17 20:01

    You can always go your own way and implement an iterator yourself. I haven't verified this code but it should work. Emphasis on "I haven't verified."

    template 
      class push_insert_iterator:
        public iterator
    {
    protected:
      Container* container;
    
    public:
      typedef Container container_type;
      explicit push_insert_iterator(Container& x) : container(&x) {}
      push_insert_iterator& operator= (typename Container::const_reference value){
        container->push(value); return *this; }
      push_insert_iterator& operator* (){ return *this; }
      push_insert_iterator& operator++ (){ return *this; }
      push_insert_iterator operator++ (int){ return *this; }
    };
    

    I'd also add in the following function to help use it:

    template
    push_insert_iterator push_inserter(Container container){
        return push_insert_iterator(container);
    }
    

提交回复
热议问题