Шрифт:
Что из этого следует? К счастью, ничего особенно сложного:
• если переносимость вас не интересует, если вы хотите изменить значение элемента в контейнере
• если программа должна быть переносимой, элементы контейнеров
Кстати, о преобразованиях. Вы убедились в том, что изменение вторичных данных элемента
Чтобы этот фрагмент нормально компилировался и работал, необходимо устранить константность
Мы берем объект, на который ссылается
Многие программисты пытаются воспользоваться следующим кодом:
Приведенный фрагмент эквивалентен следующему:
Оба фрагмента компилируются, но вследствие эквивалентности работают неправильно. На стадии выполнения объект
Становится понятно, почему преобразование должно приводить именно к ссылке — тем самым мы избегаем создания нового объекта. Вместо этого результат преобразования представляет собой ссылку на существующийобъект, на который указывает
Все сказанное хорошо подходит для контейнеров set и multiset, но при переходе к map/multimap ситуация усложняется. Вспомните, что