Насчёт JS не знаю, но, судя по описанию, вам необходима структура данных, которая называется FlatMap (есть например в бусте), ну или по крайней мере, сильно на неё похожая.
В общем и целом, можете написать свою структуру данных вроде
std::vector<std::pair<KeyType, ValueType>>
. Ну а базовый контейнер выбрать в зависимости от того, какие операции будут применяться к структуре наиболее часто, я просто вектор для примера привёл.
К слову
В QList индексы просто по порядку должны идти, без пропусков и не получится сразу взять и вставить на 42 место.
Подразумевает наличие 42 элементов (не важно пустых или нет), что вам, кажется, не надо. Поэтому, уточните плз, какую задачу вы решаете и какие реально есть требования к структуре данных.
upd.
Посмотрел доку на JS, похоже там реально flat map.