также можно использовать для добавления нового ключа, поэтому мне все равно нужно быть осторожным, когда я прикасаюсь к карте, чего я и хочу избежать

я есть ситуация, когда я хотел бы иметь карту, которая не позволяет добавлять / удалять ключи после инициализации, но значения могут изменяться (поэтому я не могу просто сделать картуconst). Т.е.

/*semi-const*/ map<int,int> myMap = initMap();

myMap[1] = 2;                  // NOT OK, because potentially adds a new key
myMap.at(1) = 2;               // OK, because works only if key is present
for (auto & element : myMap) {
    element.second = 0;        // OK, values may change
}

Я мог бы написать свою собственную обертку дляstd::map, но у меня есть ощущение, что это что-то не слишком необычное, поэтому мне интересно, существует ли уже существующее решение.

Существует ли какая-то стандартная идиома для карты, которая не позволяет добавлять / удалять ключи, в то время как значения могут изменяться?

PS: я знаю, что название само по себе немного расплывчато, потому что ключи уже константны на карте, но я надеюсь, что понятно, что я имею в виду ...

Ответы на вопрос(5)

Ваш ответ на вопрос