[英]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;
从c++11 开始,您拥有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.