#pragma once #include #include class DisjointRectSet { public: DisjointRectSet() {} ~DisjointRectSet() {} DisjointRectSet(DisjointRectSet&& other) : m_rects(move(other.m_rects)) { } void add(const Rect&); bool is_empty() const { return m_rects.is_empty(); } int size() const { return m_rects.size(); } void clear() { m_rects.clear(); } void clear_with_capacity() { m_rects.clear_with_capacity(); } const Vector& rects() const { return m_rects; } private: void shatter(); Vector m_rects; };