我有一张地图
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
答案 0 :(得分:1)
在这种情况下,documentation是您最好的朋友。
您应该使用std::map
中的operator[]
。它返回对映射到给定键的值的引用。
请注意,如果给定键在地图中尚不存在,则会将其插入。
您的示例(键:4,增加1 /将值设置为3)将是:
++Table[4];
或直接:
Table[4] = 3;
自c++11起,您拥有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]++;