C++ でテーブルまたはリレーション (一意の行を持つ順序付けられていないテーブル) のデータ構造を構築しようとしています。これまで何度も使ってきましたが、自分で作ったことはありません。
したがって、テーブルは、任意の型の任意の数の列のコレクションである必要があります。またはいくつかの派生クラスを使用std::vector<some_type>
して、列を表すことができます。
私の質問は、包括的なテーブル データ構造を定義するために、どの言語構造を使用できるかということです。基本クラスから派生できるクラスにラップstd::vector<some_type>
して、テーブルを基本クラスへのポインターのベクトルとして表すことができることはわかっていますが、表現を行うための代替方法があるかどうかを知りたいと思っています。 、おそらくいくつかのテンプレート署名を使用していますか?テーブルの列を使用するときは、キャストしすぎないようにします。
背景を説明します。私が説明している種類の既存のデータ構造を喜んで使用します。このような構造がソフトウェア業界でリレーショナル代数アルゴリズムに非常に積極的に使用されるのを見てきましたが、たとえばブーストではそのような構造は見つかりませんでした。結合、製品などの基本的な関係演算子の実装に特に興味があります...
編集:いくつかの詳細。行ベースのメモリ連続性を持つデータ構造を作成したくありません。連続性が列ベースであることが重要であるため、ベクトルのコレクションを持つことは正しいことのようです。