名前とインデックスの両方でデータを保存したい。string
つまり、名前をオブジェクトにマッピングし、それらにカスタム オーダーを付けたいと考えています。
最初に思いついたのは、キーとオブジェクトstd::vector
のペアです。string
順序は、ベクトル内の位置によって指定されました。
std::vector<std::pair<std::string, object> >
string
しかし、このアプローチは、名前の一意性を自動的にチェックしないため、最適ではないようです。さらに、オブジェクトを最初に順序でグループ化するのは間違っていると感じます。論理的には最初の順序の区別が名前であるためです。
名前とインデックスの両方でアクセスできるデータ構造が必要です。
std::magic<std::string, unsigned int, object> collection;
// access by either string or unsigned int key
collection.insert("name", 42, new object());
collection["name"]
collection[42]
このユースケースのデータ構造はすでにありますか? そうでない場合、できれば標準ライブラリを使用して、どうすればまとめることができますか? また、他のすべての要素を移動することなく、特定の要素の後の位置に新しい要素を挿入する方法が必要です。