如何实现基于坐标的优化数据结构?

时间:2018-05-16 17:11:13

标签: c++ data-structures position maps rectangles

我不知道这样的结构是否已经存在,但我想知道是否存在类似于具有以下行为的Map / Hash:

  • 将项目分配到地图时,开发人员会提供“矩形对象”(x,y,width,height)作为项目的关键字。

  • 如果提供的矩形与地图的现有矩形键重叠,则不会进行分配。

  • 为了检索项目,会向地图提供x和y位置,并返回包含此位置的矩形的项目。

1 个答案:

答案 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换成其他容器。