gpt4 book ai didi

C++ STL 映射 - 条件插入

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:24 25 4
gpt4 key购买 nike

我正在寻找一种执行条件插入的有效方法。理想情况下,我想要一个适用于任何 map 的模板函数。我想要这样的东西:

std::map<int, std::string> MyMap;
if(MyMap.ConditionalInsert(3, "Hello"))
{ // there was no element 3, one has been added with value "Hello"
}
else
{ // there was already an element 3 in the map, it's unchanged
}

我不能轻松地使用 operator[] 因为没有简单的方法来判断它是否创建了一个元素。我可以使用 count 进行测试,但是如果我们进行插入,我必须搜索 map 两次。我想使用 find 的东西会是最好的,但它似乎总是显得粗糙和笨拙。

有什么好的方法吗?

最佳答案

你认为这有什么问题:

auto ret = MyMap.insert(std::make_pair(3, "Hello"));

if( ret.second)
{
//the value is inserted
}
else
{
//no value is inserted
}

返回值表示该值是否已经存在。如果不存在,则插入该值,否则不插入任何值。

取自here :

... returns a pair, with its member pair::first set to an iterator pointing to either the newly inserted element or to the element that already had its same value in the map. The pair::second element in the pair is set to true if a new element was inserted or false if an element with the same value existed.

关于C++ STL 映射 - 条件插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8542753/

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