также можно использовать для добавления нового ключа, поэтому мне все равно нужно быть осторожным, когда я прикасаюсь к карте, чего я и хочу избежать
я есть ситуация, когда я хотел бы иметь карту, которая не позволяет добавлять / удалять ключи после инициализации, но значения могут изменяться (поэтому я не могу просто сделать карту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: я знаю, что название само по себе немного расплывчато, потому что ключи уже константны на карте, но я надеюсь, что понятно, что я имею в виду ...