久しぶりの読者初ポスター!私はboost::multi_indexコンテナのものをいじっていて、うまくいけばブーストまたはC++コンテナの専門家が知っているかもしれないかなり深い質問があります(C++コンテナに関する私の知識はかなり基本的です)。参考までに、複合キーに関するブーストのドキュメントは次の場所にあります: boost::multi_index 複合キー。
複合キーを使用する場合、ドキュメントには、「複合キーは辞書式の順序でソートされます。つまり、ソートは最初のキーで実行され、最初のキーが等しい場合は 2 番目のキーで実行される、など」と記載されています。これは、特定の 2 部構成の複合キーのルックアップに O(n=1) 時間がかかるように構造が格納されていることを意味しますか、つまり、各項目への直接のポインターがあるようにコンテナーがソートされているか、ブーストを行いますか?コンテナは、複合キーの最初の部分に一致するリストを取得し、キーの 2 番目の部分に一致する項目の検索を実行する必要があるため、処理が遅くなりますか?
たとえば、2 つの異なるインデックスを使用して 2 つのコンテナーを手動で維持し、特定の 2 部構成のクエリに一致するアイテムを見つけたい場合、クエリの最初の部分に一致するすべてのアイテムの最初のコンテナーをフィルター処理してから、クエリの 2 番目の部分に一致するアイテムの結果。したがって、この手動の方法では、実質的に 2 つの検索が必要になります。ブーストは効果的にこれを行いますか、それとも複合キーを使用して何らかの形で効率を向上させますか?
うまくいけば、私はここで自分自身を説明しましたが、質問をしてください。私の言いたいことを正確に明確にするために最善を尽くします!