Как работает итератор вставки в C ++ - PullRequest
3 голосов
/ 13 сентября 2009

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

1 Ответ

3 голосов
/ 13 сентября 2009

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

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

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...