при вставке нового элемента в список / карту возвращает итератор, указывающий на добавленный элемент. Но если вставка не удалась , что возвращает список / карта? Я прочитал ссылки, когда не удалось, список / карта не будет генерировать исключение.
map::insert возвращает пару итераторов и значение bool. Если вставка не удалась, значение bool устанавливается на false.
map::insert
false
Сайт cplusplus очень четко понимает, что map :: insert возвращает http://www.cplusplus.com/reference/stl/map/insert/
Возвращаемое значение Первая версия возвращает пару с ее парой-членом :: first, установленной на итератор, указывающий нанедавно вставленный элемент или элемент, который уже имел то же значение на карте.Элемент pair :: second в паре имеет значение true, если новый элемент был вставлен, или false, если элемент с таким же значением существовал. Вторая версия возвращает итератор, указывающий либо на вновь вставленный элемент, либок элементу, который уже имел то же значение на карте. Итератор - это тип члена, определенный как двунаправленный тип итератора.Разыменование этого итератора обращается к значению элемента, имеющему тип pair.
Возвращаемое значение Первая версия возвращает пару с ее парой-членом :: first, установленной на итератор, указывающий нанедавно вставленный элемент или элемент, который уже имел то же значение на карте.Элемент pair :: second в паре имеет значение true, если новый элемент был вставлен, или false, если элемент с таким же значением существовал.
Вторая версия возвращает итератор, указывающий либо на вновь вставленный элемент, либок элементу, который уже имел то же значение на карте.
Итератор - это тип члена, определенный как двунаправленный тип итератора.Разыменование этого итератора обращается к значению элемента, имеющему тип pair.
Если при вставке не удается выделить память, выдается bad_alloc.Во всех остальных случаях вставка работает отлично. ссылка
bad_alloc
Обновление: также необходимо скопировать вставленный объект, который может выдать любое исключение.