15 #ifndef GEOS_OPERATION_CLUSTER_CLUSTERS
16 #define GEOS_OPERATION_CLUSTER_CLUSTERS
18 #include <geos/export.h>
28 class GEOS_DLL Clusters {
30 std::vector<std::size_t> m_elemsInCluster;
31 std::vector<std::size_t> m_starts;
32 std::size_t m_numElems;
35 using const_iterator = decltype(m_elemsInCluster)::const_iterator;
37 explicit Clusters(UnionFind & uf, std::vector<std::size_t> elemsInCluster, std::size_t numElems);
40 std::size_t getNumClusters()
const {
41 return m_starts.size();
45 std::size_t getSize(std::size_t cluster)
const {
46 return static_cast<std::size_t
>(std::distance(begin(cluster), end(cluster)));
50 std::vector<std::size_t> getClusterIds(std::size_t noClusterValue = std::numeric_limits<std::size_t>::max())
const;
53 const_iterator begin(std::size_t cluster)
const {
54 return std::next(m_elemsInCluster.begin(),
static_cast<std::ptrdiff_t
>(m_starts[cluster]));
58 const_iterator end(std::size_t cluster)
const {
59 if (cluster ==
static_cast<std::size_t
>(m_starts.size() - 1)) {
60 return m_elemsInCluster.end();
63 return begin(cluster + 1);
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25