Название: Вопрос о std::map Отправлено: ksk- от Март 31, 2017, 11:41 Всем привет! Мучает вопрос: Почему в std::map нет оператора
Код ? Кто знает причину его отсутствия? Название: Re: Вопрос о std::map Отправлено: ViTech от Март 31, 2017, 12:37 Есть такая версия:
std::map::operator[] (http://en.cppreference.com/w/cpp/container/map/operator_at) Цитировать operator[] is non-const because it inserts the key if it doesn't exist. If this behavior is undesirable or if the container is const, at() may be used. Название: Re: Вопрос о std::map Отправлено: ksk- от Март 31, 2017, 13:20 Ясно. Спасибо. )
Название: Re: Вопрос о std::map Отправлено: Igors от Апрель 01, 2017, 11:24 Есть такая версия: Я бы не назвал такое объяснение исчерпывающим. Думаю проще и лучше сказать что если метод возвращает ссылку, то она должна обязательно существовать, а в случае константного метода ее может и не быть (и создать нельзя из-за const). А вот вернуть const указатель могли бы (но не сделали, паразиты)std::map::operator[] (http://en.cppreference.com/w/cpp/container/map/operator_at) Цитировать operator[] is non-const because it inserts the key if it doesn't exist. If this behavior is undesirable or if the container is const, at() may be used. Название: Re: Вопрос о std::map Отправлено: Old от Апрель 01, 2017, 11:35 А вот вернуть const указатель могли бы (но не сделали, паразиты) И слава Богу.У map достаточно методов определить наличие элемента и получить ссылку на него, как константную, так и не константную. Название: Re: Вопрос о std::map Отправлено: __Heaven__ от Апрель 03, 2017, 09:16 Существуют ли накладные расходы при использовании at вместо operator[] если известно, что элемент существует и мапа неконстантна?
Название: Re: Вопрос о std::map Отправлено: ViTech от Апрель 03, 2017, 12:33 Существуют ли накладные расходы при использовании at вместо operator[] если известно, что элемент существует и мапа неконстантна? Это в бОльшей степени зависит от реализации map в конкретной версии конкретного компилятора. Стандартом это особо не регламентируется. Название: Re: Вопрос о std::map Отправлено: __Heaven__ от Апрель 03, 2017, 13:15 Не так вопрос задал. Могут ли существовать накладные расходы и в чём они могли бы проявляться.
По моим ощущениям и там и там выполняется некий map::find и дальнейшее поведение в случае ненахождения ключа отличается только в соответствии со спецификацией. В случае же успешного поиска ключа поведение одинаковое. Так ли оно? Название: Re: Вопрос о std::map Отправлено: Old от Апрель 03, 2017, 13:46 Не так вопрос задал. Могут ли существовать накладные расходы и в чём они могли бы проявляться. Да. А метод называется lower_bound.По моим ощущениям и там и там выполняется некий map::find и дальнейшее поведение в случае ненахождения ключа отличается только в соответствии со спецификацией. В случае же успешного поиска ключа поведение одинаковое. Так ли оно? Название: Re: Вопрос о std::map Отправлено: __Heaven__ от Апрель 03, 2017, 14:00 Спасибо :)
|