5

名前とインデックスの両方でデータを保存したい。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]

このユースケースのデータ構造はすでにありますか? そうでない場合、できれば標準ライブラリを使用して、どうすればまとめることができますか? また、他のすべての要素を移動することなく、特定の要素の後の位置に新しい要素を挿入する方法が必要です。

4

1 に答える 1