UnionFindの実装をしている時に知ったのだが、C++では構造体にメンバ関数をもったりコンストラクタを持ったりできるらしい。
調べてみたところ、C++における構造体とクラスの違いはメンバ変数のデフォルト(何も指定しない時)でのアクセスレベルの違いのみであるということだ。
構造体の場合デフォルトではpublic:、逆にクラスの場合はデフォルトではprivateなのだそうだ。
自分はC++超初心者かつ競プロしかしてないのであまりクラスや構造体を使ったコードを書くことはないのだが、たまたまライブラリを作る時に書かなければいけないときに、他の人が構造体の中でコンストラクタや関数を持っていたのでびっくり仰天した。