【发布时间】:2009-09-13 09:34:14
【问题描述】:
在数据库模板库或其他库中有插入迭代器,有人可以告诉我它是如何工作的吗? 谢谢!
【问题讨论】:
标签: c++ templates insert-iterator
在数据库模板库或其他库中有插入迭代器,有人可以告诉我它是如何工作的吗? 谢谢!
【问题讨论】:
标签: c++ templates insert-iterator
它是一个模板类,所以你应该能够在实现中查找它。
然而,这个想法是它存储一个迭代器(当前位置)和一个对容器(正在插入的)的引用(指针)。然后它像这样重载 operator=:
insert_iterator& operator= (typename Container::const_reference value)
{
m_iter = m_container->insert(m_iter, value);
++m_iter;
return *this;
}
因此它需要一个支持 insert 方法和至少一个前向迭代器的容器,并且具有标准的 typedef(const_reference 或 value_type),因此它可以声明其 operator= 的右手类型。
其他输出迭代器运算符 (*, ++) 只返回 *this。
【讨论】: