Вы не push_back
или push_front
до set
, потому что (концептуально) set
является отсортированным ассоциативным контейнером. Вы можете сделать это, хотя:
#include <cstdlib>
#include <set>
#include <iterator>
using namespace std;
int main()
{
typedef set<int> MySet;
MySet si;
insert_iterator<MySet> it(si, si.begin());
*it = 1;
*it = 2;
}
EDIT:
Обратите внимание, что begin()
, с которым инициализируется итератор, это , а не , куда помещаются элементы. Скорее, это подсказка STL, где начать искать, куда поместить предмет.
EDIT2:
Согласно комментариям ниже, вы также хотели проверить «расположение» вставленного предмета. То есть способ узнать, присутствовал или не присутствовал элемент до того, как вы его вставили.
Вы не можете сделать это напрямую, используя only итератор. Если вам нужна эта информация, у вас есть два варианта.
1) Не используйте итератор вставки. Единственный способ получить bool
, полученный от set::insert
, - позвонить set::insert
. Так что звоните set::insert
42) Проверьте размер set
как до, так и после вставки. Если размер вырос на единицу, элемент был вставлен. :) Я рекламирую это как пункт № 42, потому что IMO это гораздо менее выгодно, чем просто звонить insert
напрямую по ряду причин. Могут быть проблемы с многопоточностью, может быть снижение производительности при вычислениях size()
и т. Д.