gpt4 book ai didi

c++ - STL::map 插入一个带约束的值

转载 作者:太空狗 更新时间:2023-10-29 20:44:38 25 4
gpt4 key购买 nike

我正在使用 STL::map 来存储一些带有值的键。对于我的应用程序,仅当当前值大于前一个值时,我才需要更改键的值。为此,我打电话find() 来搜索键是否已经在映射中并因此更改它的值,否则我调用 insert() 来存储新键。有没有办法以有效的方式做这种事情?或者只调用 insert() 对值进行自定义约束?

最佳答案

如下所示,std::map 上的一个插入重载返回一对包含指向节点的迭代器和 bool 值的对。 bool 告诉你插入是否成功,或者有一个欺骗。如果为 false,只需使用迭代器手动更新值。

#include <iostream>
#include <string>
#include <map>

int main()
{
typedef std::map<std::string, int> TestMap;
TestMap test;
test.insert(std::make_pair("one", 1));

std::pair<TestMap::iterator, bool> result =
test.insert(std::make_pair("one", 2));

if (!result.second)
{
// was a duplicate, so let's manually set the value on the existing
// map entry

result.first->second = 2;
}

std::cout << test.at("one") << std::endl; // outputs 2
}

关于c++ - STL::map 插入一个带约束的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12767233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com