我不知道这样的结构是否已经存在,但我想知道是否存在类似于具有以下行为的Map / Hash:
将项目分配到地图时,开发人员会提供“矩形对象”(x,y,width,height)作为项目的关键字。
如果提供的矩形与地图的现有矩形键重叠,则不会进行分配。
为了检索项目,会向地图提供x和y位置,并返回包含此位置的矩形的项目。
答案 0 :(得分:0)
我不认为STL中有任何现成的东西,但您可以查看容器的完整列表here。
您可以非常轻松地使用自定义实现自己包装。
轻量级矩形怎么样:
struct Rectangle {
int x;
int y;
int width;
int height;
};
然后是一个容纳矩形并处理添加检索它们的逻辑的容器:
struct ContainerOfRectangles {
std::vector<Rectangle> rectangles;
void AddNew(Rectangle r)
{
if (/* some condition is true */)
{
rectangles.push_back(r);
}
}
Rectangle GetRectangle(Rectangle referenceRect)
{
for (const auto& rectangle : rectangles)
{
if (/* some condition on referenceRect and rectangle */)
{
return rectangle;
}
}
// Something here if the rectangle wasn't found
return Rectangle{};
}
};
如果您愿意,可以将vector
换成其他容器。