В C ++ - STL set :: end () возвращает итератор, указывающий на элемент last-the-last контейнера set. Поскольку он не ссылается на действительный элемент, он не может разыменованной функцией end () вернуть двунаправленный итератор.
Но когда я выполняю следующий код:
set<int> s;
s.insert(1);
s.insert(4);
s.insert(2);
// iterator pointing to the end
auto pos2 = s.end();
cout<<*pos2;
, он печатает 3
как вывод. Вывод увеличивается, когда я вставляю больше элементов в набор и всегда равен общему количеству элементов в наборе.
Почему это происходит?