gpt4 book ai didi

c++ - 如何根据插入的对的存在实现不同的 `std::map insert()` 行为?

转载 作者:行者123 更新时间:2023-11-28 07:33:02 26 4
gpt4 key购买 nike

我希望 std::map insert() 函数根据要插入的对是否已经在 map 中而表现不同——如果没有,照常插入,如果它已经存在,则增加存储在 second 对中的计数器。我如何在不额外查询是否存在的情况下做到这一点(因为无论如何插入都会查询它)?

我正在跟踪大量事件记录,每个记录都包含 sourcereceiver ID。事件存储为 std::vector。我还尝试将 sourcesreceivers 记录的字典维护为 std::map 其中 first对(键)中的一个包含 ID,而 second 包含一些 source 信息加上 std::vector 跟踪引用的所有事件到那个 source

因此,当事件引用当前不存在的 source 时,插入应正常进行,但如果引用的 source 已在字典中,则插入应添加现有字典元素的 std::vector 的引用事件编号。

最佳答案

看起来必须保留 insert 函数的结果,对其进行分析并做出相应的行为:

typedef std::map<int, T> itmap;
typedef std::pair<itmap::iterator, bool> itinsresult;
//...
itmap m;
int i;
T t;
//...
itinsresult result = m.insert(std::make_pair(i, t));
if (result.second) // new element inserted
{
//...
}
else // element already exists
{
(*result.first).do_something();
// ...
}

关于c++ - 如何根据插入的对的存在实现不同的 `std::map insert()` 行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17292798/

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