gpt4 book ai didi

C++ map 问题

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:44 24 4
gpt4 key购买 nike

我有一个完整的基于位置的算法。 (即算法的输出是基于一个曲线位置,每一个结果都会受到前面结果的值的影响)。

为了避免每次都重新计算,我想以给定的采样率预先计算,然后执行查找并返回预先计算的结果(如果我直接登陆一个),或者在两个相邻结果之间进行插值.

这对我来说在 F# 或 C# 中是微不足道的,但我的 C++ 非常生疏,(甚至从来没有那么好)。

map 是正确的结构吗?能否请您举例说明如何执行查找? (我正在考虑以毫米为单位进行预先计算,这意味着键可以是 int,值可以是 double)。

更新 好的,也许我需要的是一个排序的字典。 (挽起袖子),伪代码:

//Initialisation
fun MyFunction(int position, double previousresult) returns double {/*etc*/};
double lastresult = 0.0;
for(int s = startposition to endposition by sampledist)
{
lastresult = MyFunction(s, lastresult);
MapOrWhatever.Add(s, lastresult);
}
//Using for lookup
fun GetValueAtPosition(int position) returns double
{
CheckPositionIsInRangeElseException(position);
if(MapOrWhatever.ContainsKey(position))
return MapOrWhatever[position];
else
{
int i = 0;
//or possibly something clever with position % sampledist...
while(MapOrWhatever.Keys[i] < position) i+=sampledist;
return Interpolate(MapOrWhatever, i, i+sampledist, position);
}
}

我想...也许如果我保持一个常量采样器,我可以只使用一个数组并对其进行索引...

最佳答案

如果您的值保证不连续,std::map 在这里听起来很适合内存。

#include <map>

// ...

std::map<int, double> memo;
memo.insert(std::make_pair(5, 0.5));
double x = memo[5]; // x == 0.5

关于C++ map 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1484421/

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