Как работает итератор вставки в C++

Есть итератор вставки в библиотеке шаблонов базы данных или другой библиотеке, может кто-нибудь сказать мне, как это работает? Спасибо!

1 ответ

Решение

Это шаблонный класс, поэтому вы должны быть в состоянии найти его в реализации.

Однако идея заключается в том, что он хранит итератор (текущее местоположение) и ссылку (указатель) на контейнер (который вставляется в). Затем он перегружает operator= примерно так:

insert_iterator& operator= (typename Container::const_reference value)
{
    m_iter = m_container->insert(m_iter, value);
    ++m_iter;
    return *this;
}

Поэтому ему требуется контейнер, который поддерживает метод вставки и, по крайней мере, прямой итератор, и имеет стандартные typedefs (const_reference или, возможно, value_type), поэтому он может объявить правый тип своего оператора =.

Другие выходные операторы итератора (*, ++) просто возвращают *this.

Другие вопросы по тегам