Не думаю, что в STL есть что-то готовое, но вы можете проверить полный список контейнеров здесь .
Вы можете довольно легко обернуть свою собственную пользовательскую реализацию.
Как насчет легкого прямоугольника:
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
на другой контейнер, если хотите.