Вопрос необходимо конкретизировать:
1) О какой гибкости идёт речь?
2) Удобство -- это субъективный критерий. Приведите примеры кода.
3) Какую задачу вы пытаетесь решить?
Стоить помнить, что в C++ сложнее работать с гетерогенными контейнерами, чем, допустим, в PHP/Python/Ruby и т.п., в силу другого подхода к типизации. Т.е. если вы хотите контейнер с разными типами ключей и/или значений, то придётся немного повозиться.
Помимо этого, языки имеют разный синтаксис, что тоже следует принимать во внимание.
При этом библиотека map и multimap, не позволяет такой гибкости.
это контейнеры стандартной библиотеки.
Они не обязаны быть гибким (в том смысле что всем угодить невозможно) , они должны быть эффективными и гарантировать чётко определённое поведение. Если вам мало их интерфейса вкупе со стандартными алгоритмами, вы можете их легко расширить определяя собственные типы на основе стандартных. И крутить вертеть их как вам угодно.
programmer0101, а зачем тебе JSON постоянно декодировать? Работай напрямую с узлами модели.
Еще раз, какую конкретную задачу должен решать такой контейнер?