gpt4 book ai didi

c++ - back_inserter 是如何工作的?

转载 作者:可可西里 更新时间:2023-11-01 15:11:06 27 4
gpt4 key购买 nike

我正在尝试了解 back_inserter 的工作原理,这是我从 SGI-STL 获得的实现:

template<class C>
class back_insert_iterator {
protected:
C* container;
public:
typedef C container_type;
typedef output_iterator_tag iterator_category;
typedef void value_type;
typedef void difference_type;
typedef void pointer;
typedef void reference;

explicit back_insert_iterator( C& __x ) :container( &__x ) {
}

back_insert_iterator<C>& operator=( const typename C::value_type& val ) {
container->push_back( val );
return *this;
}

back_insert_iterator<C>& operator*() {
return *this;
}

back_insert_iterator<C>& operator++() {
return *this;
}

back_insert_iterator<C>& operator++( int ) {
return *this;
}
};

除了最后三个运算符 *、++、++( int ),我理解了大部分内容。我猜测它们的存在是因为当它们被放置在 STL 算法中时需要支持操作。除此之外,我不知道它们有什么用?谁能帮我澄清一下?

谢谢,

最佳答案

它们的存在是因为 STL 算法在迭代器上工作,迭代器必须是后递增和预递增的,并且具有取消引用运算符。

试着想想这是做什么的:

(*back_inserter) = value;
++back_inserter;

关于c++ - back_inserter 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4732999/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com