エントリごとに 3 つのフィールドを持つ列挙型のルックアップ コンテナを作成したいと考えています。1) 列挙値 2) 人間が読める文字列 3) データベース文字列
以下は、各列挙型の宣言がどのように見えるかを想定したものです。
namespace MyNameSpace
{
enum Enum
{
One,
Two,
Three
};
LOOKUP_MAP_BEGIN
(One, "One", "1")
(Two, "Two", "2")
(Three, "Three", "3")
LOOKUP_MAP_END
}
私は確かにマクロの大ファンではありませんが、この場合、マクロはきれいにクリーンアップされ、マップ エントリを列挙型の近くに保持して、列挙型への変更が確実に引き継がれるようにします。
すべてのエントリが一意であると想定されます。3 つのフィールドのいずれかをキーとして使用してルックアップを実行し、他の 2 つのフィールドのいずれかを取得できるようにしたいと考えています。物事を大幅に単純化する場合は、文字列フィールドをキーとして使用してルックアップを制限し、対応する列挙値のみを返し、他の文字列は返さないようにすることで機能させることができます。
このようなことを達成できる既存のコンテナはありますか、それとも、リンクされた複数の (何らかの形で) リンクされたマップ/ベクトル/リストを管理しようとしていますか? Boost ライブラリにアクセスできます。