Как работает итератор вставки в 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.