繁体   English   中英

更改地图中特定键的值

[英]Changing values of a particular key in map

我有地图

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

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

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

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

++Table[4];

或者直接:

Table[4] = 3;

,您拥有std::map中的at()成员,其执行与operator[]()相同,除了它不会尝试插入不存在的键,但会抛出std::out_of_range异常。

您可以使用 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 的键的 and 元素并且没有添加新键,我建议使用它:

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]++;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM