как мне установить определенный размер
и как я могу установить все его значения в
нули
Это, вероятно, гораздо больше концептуальной проблемы, чем проблема синтаксиса / "как". Да, это правда, что при первоначальном доступе с данным ключом будет создано соответствующее значение и по умолчанию установлено значение 0, как сказали многие авторы / комментаторы. Но важная фраза, которую вы использовали, которая не подходит:
все его значения
У него нет значений для начала, и если вы программируете с предположением, что это так, это само по себе может стать причиной концептуальных ошибок.
Обычно лучше иметь привычку выяснять, есть ли ключ на вашей карте, а затем, если нет, сделать что-то для его инициализации. Даже если это может показаться просто накладными расходами, выполнение таких явных действий, вероятно, предотвратит концептуальные ошибки в будущем, особенно когда вы пытаетесь получить доступ к значению ключа, не зная, было ли оно уже на карте.
Сводка в одну строку: разве вы не хотите инициализировать значение самостоятельно, вместо того, чтобы карта назначала его значение по умолчанию для любого заданного значения ключа?
Таким образом, код, который вы, вероятно, хотите использовать:
if(mymap.find(someKey) == mymap.end())
{
// initialize it explicitly
mymap[someKey] = someInitialValue;
}
else
{
// it has a value, now you can use it, increment it, whatever
mymap[someKey] += someIncrement;
}