Здравствуйте, Sinix, Вы писали:
S>>>Вот на 100%, без исключений — если для решения задачи приходится вводить конструкции, которые плохо ложатся на язык, то проблема или в формулировке задачи, или в попытке решить задачу с наскока, без введения промежуточного слоя абстракций.
EP>>В C++ STL это работает из коробки:
S>Ну так коллекции разные
S>В дотнете бросается исключение, если ключа нет в словаре.
Это понятно. В STL есть отдельный метод find который не создаёт ничего, а только ищет.
А вообще, вот такое поведение, где operator[] создаёт default в случае отсутствия — очень удобно. Потому что обычно default является нейтральным элементом относительно применяемых операций. Простой пример это подсчёт количества вхождений —
++count[id], или например конкатенация строк
result_string[id] += s;, или случай ТС со вложенными контейнерами.