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));