3

数据库模板库或其他库中有插入迭代器,有人可以告诉我它是如何工作的吗?谢谢!

4

1 回答 1

3

它是一个模板类,因此您应该能够在实现中查找它。

然而,这个想法是它存储一个迭代器(当前位置)和一个对容器(正在插入)的引用(指针)。然后它像这样重载 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。

于 2009-09-13T10:03:00.980 回答