Не перезаписывать предыдущие значения, что использовать?
std::map<T1,T2>::insert
уже делает эту проверку для вас, если уже есть запись с указанным ключом, вставка будет прервана.
std::map<int, std::string> m;
m.insert (std::make_pair (3, "hello world"));
m.insert (std::make_pair (3, "world hello"));
std::cerr << m[3] << std::endl;
вывод:
hello world
Было ли введено новое значение?
std::map<T1,T2>::insert
возвращает std::pair<std::map<T1,T2>::iterator, bool>
, второе значение (pair.second
) будет действовать как флаг, указывающий, была ли вставлена пара ключ / значение.
if ret.second == true: value was inserted
if ret.second == false: the key has already been set
пример фрагмента:
std::cerr << m.insert (std::make_pair (1,1)).second << std::endl;
std::cerr << m.insert (std::make_pair (1,2)).second << std::endl;
output
1
0