类别:迭代器,适配器 | 组件类型:类型 |
list<int> L; L.push_front(3); back_insert_iterator<list<int> > ii(L); *ii++ = 0; *ii++ = 1; *ii++ = 2; copy(L.begin(), L.end(), ostream_iterator<int>(cout, " ")); // The values that are printed are 3 0 1 2
参数 | 描述 | 默认值 |
---|---|---|
BackInsertionSequence | 将要插入值的 后插入序列 的类型。 |
成员 | 定义位置 | 描述 |
---|---|---|
back_insert_iterator(BackInsertionSequence&) | back_insert_iterator | 见下文。 |
back_insert_iterator(const back_insert_iterator&) | 平凡迭代器 | 复制构造函数 |
back_insert_iterator& operator=(const back_insert_iterator&) |
平凡迭代器 | 赋值运算符 |
back_insert_iterator& operator*() | 输出迭代器 | 用于实现 输出迭代器 表达式*i = x. [2] |
back_insert_iterator& operator=(const BackInsertionSequence::value_type&) |
输出迭代器 | 用于实现 输出迭代器 表达式*i = x. [2] |
back_insert_iterator& operator++() | 输出迭代器 | 前递增。 |
back_insert_iterator& operator++(int) | 输出迭代器 | 后递增。 |
output_iterator_tag iterator_category(const back_insert_iterator&) |
迭代器标签 | 返回迭代器的类别。这是一个全局函数,不是成员函数。 |
template<class BackInsertionSequence> back_insert_iterator<BackInsertionSequence> back_inserter(BackInsertionSequence& S) |
back_insert_iterator | 见下文。 |
成员函数 | 描述 |
---|---|
back_insert_iterator(BackInsertionSequence& S) | 构造一个back_insert_iterator它会在S的最后一个元素之后插入对象。(也就是说,它会在S的末尾迭代器之前插入对象。) |
template<class BackInsertionSequence> back_insert_iterator<BackInsertionSequence> back_inserter(BackInsertionSequence& S); |
等同于back_insert_iterator<BackInsertionSequence>(S). [3] 这是一个全局函数,而不是成员函数。 |
[1] 注意通过BackInsertionSequence::iterator进行赋值和通过back_insert_iterator<BackInsertionSequence>进行赋值之间的区别。如果i是一个有效的BackInsertionSequence::iterator,那么它指向 后插入序列 中的某个特定元素;表达式*i = t用t替换该元素,并且不会改变 后插入序列 中元素的总数。但是,如果ii是一个有效的back_insert_iterator<BackInsertionSequence>是,那么表达式*ii = t等同于表达式seq.push_back(t)。也就是说,它不会覆盖任何seq的元素,并且会改变seq的大小。
[2] 注意如何通过back_insert_iterator进行赋值。一般来说,一元operator*必须被定义,以便它返回一个代理对象,其中代理对象定义了operator=以执行插入操作。在这种情况下,为了简单起见,代理对象是back_insert_iterator本身。也就是说,*i仅返回i,并且*i = t等同于i = t。但是,你不应该依赖这种行为。这是一个实现细节,并且不能保证在将来的版本中保持一致。
[3] 此函数仅为了方便而存在:由于它是一个非成员函数,因此可以推断出模板参数,并且不需要显式声明back_insert_iterator的类型。例如,反转一个范围并将其插入 后插入序列 的末尾的一种简单方法是S,例如reverse_copy(first, last, back_inserter(S)).