А потом гулять итератором по этой структуре.
Ваш способ хорош, и я бы так и сделал, если бы проектировал с нуля, но мне на руки попал код на Java, где допушена ошибка и происходит потеря данных при добавлении значений с одинаковыми ключами. Кода много, и если сделать, как вы предложили, то придется почти все переписывать, и я наверняка сам создам множество багов.
Денис Загаевский: я отталкивался от фразы из документации llvm "Static constructors and destructors (e.g. global variables whose types have a constructor or destructor) should not be added to the code base, and should be removed wherever possible."
Но да. Я плохо сформулировал. Спасибо.
2. Спасибо, что указали на нарушение ООП, я так зацепился за это решение, что не заметил нарушения инкапсуляции.
Спасибо!