2016-10-10 5 views
0

Я хотел был бы изменить значение для ключа на карте. Как мне это сделать? Возможно ли это?Как обновить карту X ++

я нашел только метод вставки (_key, _value), но я не хочу, чтобы создать новый ключ со значением, но изменить значение существующего ключа.

ответ

2

Как изменить ключ

Просто удалите старый ключ, а затем снова вставьте с новым ключом.

map = new Map(Types::String,Types::Real) 
map.insert("a", 1); 
map.insert("b", 2); 
map.insert("c", 3); 
map.remove("b");  // remove key 
map.insert("y", 2); // reinsert new key with value 

Как изменить значение

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

Возвращаемое значение
Тип: логическое
верно, если ключ уже не существует на карте и был включен; в противном случае - false.
Примечания
Если ключ уже существует в карте, значение обновляется.

Например, чтобы вручную суммировать количество линий группировки по пункту группы:

Map map = new Map(Types::String,Types::Real); 
SalesLine sl; 
while select sl where sl.SalesId == "123" 
{ 
    map.insert(sl.ItemGroup, sl.LineAmount + (map.exists(sl.ItemGroup) ? map.lookup(sl.ItemGroup) : 0); 
} 

эквивалентно, но производительность мудрым уступает:

select sum(LineAmount) sl group ItemGroup where sl.SalesId == "123";