У меня есть программа на С++, в которой я хочу вставить значения по умолчанию для любых ключей, отсутствующих в std::map
. Я думаю, что самый простой способ сделать это - использовать std::map::operator[]()
как команду касания POSIX, то есть оставить значение неизменным, если оно уже существует, но создать его, если это не так. Для ,
#include <map>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> keys = {0, 1};
map<int, int> m;
m[1] = 5;
m[2] = 12;
for (const int i : keys)
{
m[i]; // touch value
}
for (auto const & kv : m)
{
cout << kv.first << ", " << kv.second << endl;
}
}
Могу ли я быть уверенным, что компилятор не будет оптимизировать инструкции m[i];
, так как я не делаю с ними что-нибудь? (Явным образом не назначаю, а не читаю.)