gpt4 book ai didi

c++ - 如何改进存储许多结果的结构?

转载 作者:太空狗 更新时间:2023-10-29 21:46:03 26 4
gpt4 key购买 nike

我有一个 Polygon 结构和一个具有以下签名的函数

Polygon myfunction(Polygon &pol1, Polygon &pol2, int rot1, int rot2); 

其中pol1和pol2是多边形,rot1和rot2是应用于pol1和pol2的旋转。

我需要存储应用于一组多边形和一组允许旋转的 myfunction 的所有结果。

因此,例如,如果我有 100 个多边形和 4 个允许的旋转,我需要存储 100*100*4*4 = 160000 个多边形。我知道我需要大量内存,但我可以接受。

目前我将它们存储在这样的容器中:

vector<vector<vector<vector<Polygon>> results;

这样调用 results[pol1][pol2][rot1][rot2]; 我得到了正确的多边形。

我知道访问单个结果可能效率很低,那么我该如何改进呢?

最佳答案

这取决于很多事情,我的解决方案是混合 std::tuple std::map

typedef std::tuple<Polygon , Polygon , int, int> Params;

std::map<Params, Polygon> results;

将参数映射到结果。在这种情况下,您可以有效地找到特定输入的结果。

要使用,你必须重载operator<对于 Polygon因为std::map :

struct Polygon
{
// ...
};

inline bool operator<(const Polygon &p1, const Polygon &p2)
{
return ...;
}

Polygon p1, p2, p3;

// ...

results.insert(std::make_pair(std::make_tuple(p1, p2, 1, 2), p3));

关于c++ - 如何改进存储许多结果的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16064937/

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