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

C++ 如何改进存储许多结果的结构?,c++,c++11,polygons,C++,C++11,Polygons,我有一个多边形结构和一个带有以下签名的函数 Polygon myfunction(Polygon &pol1, Polygon &pol2, int rot1, int rot2); 其中pol1和pol2是多边形s,rot1和rot2是应用于pol1和pol2的旋转 我需要存储应用于一组多边形和一组允许旋转的myfunction的所有结果 例如,如果我有100个多边形和4个允许的旋转,我需要存储100*100*4*4=160000个多边形。我知道我需要很多记忆,但我可以接受

我有一个
多边形
结构和一个带有以下签名的函数

Polygon myfunction(Polygon &pol1, Polygon &pol2, int rot1, int rot2); 
其中pol1和pol2是
多边形
s,rot1和rot2是应用于pol1和pol2的旋转

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

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

目前,我将它们储存在这样一个容器中:

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

vector这取决于很多事情,我的解决方案是混合和


由于只有4个旋转,我认为最好不要将它们作为贴图关键点,而是作为索引。例如,对于两个旋转的每次组合,可能会有一个地图,使用一对多边形作为键。@Zyx2000谢谢您的建议,但4只是一个示例。可能会有更多的旋转。@888即使有更多的旋转,只要您一直都在使用它们,将它们作为索引是合适的。
typedef std::tuple<Polygon , Polygon , int, int> Params;

std::map<Params, Polygon> results;
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));