gpt4 book ai didi

c++ - 替代标准命名空间中的嵌套映射

转载 作者:太空宇宙 更新时间:2023-11-04 16:04:46 25 4
gpt4 key购买 nike

我有嵌套类型的 map :

std::map<int,std::map<pointer,pointer>>

我每次/每帧都在 map 上迭代并对其进行更新。所以基本上我有 2 个嵌套的 if 循环。我有一个数组,我需要用 2 个属性对数据进行排序。第一个属性是整数,它是第一个键,然后第二个属性是一个指针,它是主映射内嵌套映射的键。所以我的代码是这样的:

iterator = outermap.find();
if(iterator!=outermap.end()){
value = iterator->second;
it1 = value.find();
if(it1!=value.end(){
value1 = it1->second;
// do something
}
else{
// do something and add new value
}
}
else {
// do something and add the values
}

这真的很慢,导致我的应用程序降低帧速率。还有其他选择吗?我们可以使用哈希码和链表来实现相同的目的吗?

最佳答案

您可以使用 std::unordered_map,它会对键进行哈希处理,以便更快地找到完整的结果。使用 value = iterator->second 将整个 map 复制到“value”变量。使用引用可以避免不必要的复制并且有利于提高性能,例如:auto & value = iterator->second

同时 std::map 保证为 ordered .这对您有利,因为您的键是最外层 map 的整数。

关于c++ - 替代标准命名空间中的嵌套映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37474909/

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