д значений контейнера с помощь

Автор admin Четверг, 11 июня 2009 11:32

д значений контейнера с помощью оператора [ ] в цикле for порождает сразу несколько проблем. Прежде всего ключи должны иметь целочисленные значения (это условие выполняется в нашем примере). Вторая (и более серьезная проблема) состоит в том, что если ключи не образуют непрерывную последовательность, при переборе от нуля до размера контейнера будут автоматически созданы пары для отсутствующих ключей, а более высокие значения ключей окажутся упущенными. Наконец, если взглянуть на трассировку цикла for, вы увидите, что при выводе выполняется очень много операций. На первый взгляд совершенно непонятно, почему простой перебор сопровождается таким количеством вызовов конструкторов и деструкторов. Ситуация проясняется только при просмотре кода операторной функции operator[ ] в шаблоне тар, который выглядит примерно так: mapped_type& operator[] (const key_type& k) { value_type tmp(k.TO); return (*((insert(tmp)).first)).second; } Функция map::insert() получает пару «ключ-значение». Если в отображении уже имеется элемент с заданным ключом, ничего не происходит, иначе создается элемент. В любом случае функция возв


Комментарии закрыты.