Здравствуйте, qaz77, Вы писали:
Q>И еще, связанный вопрос про std::set.
Q>Почему оставлена возможность изменить элемент set'а? Это для компаратора по части элемента?
Q>Если в простом примере поменять элемент, то контейнер умирает:
Q>Q> std::set<std::string> s;
Q> s.insert("A")
Q> s.insert("B");
Q> *s.begin() = "C";
Q> //... oops
Q>
Q>Если бы разыменование итератора возвращало константную ссылку, то такой проблемы бы не возникало.
А если изменения ключа не приводит к изменению порядка, то зачем платить больше?
Q>При этом не константный итератор позволял бы удалять и вставлять элементы.
У вставки/удаления сложность не константная.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]