更改地图中特定键的值

时间:2019-12-05 08:34:32

标签: c++ stl

我有一张地图

std::map<int,int> Table;

Table.insert(pair<int, int>(5, 1)); 
Table.insert(pair<int, int>(4, 2)); 
Table.insert(pair<int, int>(3, 3)); 
Table.insert(pair<int, int>(2, 4)); 

我想知道如何更改特定键的值。 例如。对于键4,我想将值增加到3

2 个答案:

答案 0 :(得分:1)

在这种情况下,documentation是您最好的朋友。

您应该使用std::map中的operator[]。它返回对映射到给定键的值的引用。
请注意,如果给定键在地图中尚不存在,则会将其插入。

您的示例(键:4,增加1 /将值设置为3)将是:

++Table[4];

或直接:

Table[4] = 3;

起,您拥有std::map的{​​{3}}成员,其成员与operator[]()相同,只是它不尝试插入密钥(如果该密钥不存在)但会抛出at()异常。

答案 1 :(得分:1)

您可以使用operator []插入新密钥或更改旧密钥的值,例如:

  

注意:如果k与容器中任何元素的键都不匹配,则   函数使用该键插入一个新元素

std::map<int, int> Table;

Table[5] = 1;
Table[4] = 2;
Table[3] = 3;
Table[5] = 4;

此外,您可以使用at()函数来更改键的值,但是使用此功能无法插入新的键,例如:

std::map<int, int> Table;

Table[5] = 1;
Table.at(5) = 10; // Note that Table.at(3) throws an exception when it does not exist.

如果您只想使用与k等价的键在容器中搜索和元素,并且不添加新键,则建议使用它:

std::map<int, int> table;

int k = 4; 

Table[5] = 1;
Table[4] = 2;
Table[3] = 3;

if (Table.find(k) != Table.end())
  Table.at(k)++; //or Table[k]++;