gpt4 book ai didi

c++ - 合并两张 map 的快速方法?

转载 作者:行者123 更新时间:2023-11-30 01:09:03 24 4
gpt4 key购买 nike

我有 2 张 map :

map<int,BigObject> a,b;

如果ab不要共享任何 key 有没有办法合并b进入a , 它不复制 BigObject对象?

正在复制 BigObject对象是瓶颈。

最佳答案

你应该做的第一件事是制作BigObject移动成本低,并且可能使其成为无拷贝。一种方法是将它们大而昂贵的状态转移到 std::unique_ptr< InternalState > 中。 .如果您仍然需要 拷贝(我发现您通常不需要),您可能需要 value_ptr< InternalState > ,要么从像 boost 这样的库中获取值 ptr或自己编写。

否则,您可以等待 C++17。在 C++17 中,(某些?)基于关联节点的容器获得了在它们之间快速移动节点集的能力。这包括 std::map .

如果做不到这一点,您的映射可以从一个键到一个 unique_ptr<BigObject> .这为您的 map 的其他用途增加了少量的间接性,但它们现在可以便宜地移动。

关于c++ - 合并两张 map 的快速方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919024/

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