UnionFind.ixx
UnionFind
Download source code for Visual Studio 2022 from Github
UnionFind.ixx
#include "pch.h"
#include <vector>
export module unionfind:uf;
import nodes;
export class UnionFind {
protected:
Nodes m_nodes;
public:
UnionFind(const int size, ArrayType &arrayType ):
m_nodes(arrayType)
{
m_nodes.resize(size);
}
virtual void initialize()
{
assert(m_nodes.size() > 0);
for (int i = m_nodes.firstIndex(); i <= m_nodes.lastIndex(); i++)
m_nodes[i] = i;
}
virtual int getValue(const int index) = 0;
const std::vector<int>& getAllValues() { return m_nodes.getAll(); }
void setAllValuesvector<int>&& values) { m_nodes.setValues(std::move(values); }
constexpr int getSize() const { return m_nodes.size(); }
virtual void union_nodes(const int a, const int b) = 0;
virtual ~UnionFind() = default;
};
UnionFindTest.ixx
#include "pch.h"
export module unionfindtest;
import unionfind;
export void unionlistOfNodes(UnionFind * unionFind, std::initializer_list<std::tuple<int,int>> listOfPairOfNodes)
{
for (auto pairNode : listOfPairOfNodes )
{
unionFind->union_nodes(get<0>(pairNode), get<1>(pairNode));
}
}