hash_mapはどこにありますか?
-
03-07-2019 - |
質問
hash_map
および hash_set
ヘッダーはまだC ++標準に含まれていませんが、最近使用したすべてのコンパイラーの拡張機能として使用できます。
移植性を犠牲にすることなく、実際のコードでこれらにどれだけ頼ることができるのか疑問に思っています。私は、次のような多くのアーキテクチャとコンパイラで実行する必要があるツールプロジェクトに取り組んでいます。
- Linux(x86_64、AMD / Intel): GCC、Intel、Portland Compilers
- AIX(Power): GCC、xlC
- Cray XTシリーズ(AMD): GCC、ポートランド、パススケールコンパイラ
- IBM Blue Gene Series(Power): xlC、GCC
- SGI Altix(Itanium): Intelコンパイラ
- Windows:優先事項ではありませんが、便利な回答を提供してください。
これらのいくつかは非常にエキゾチックであることがわかりますが、それはポイントではありません。複数のプラットフォームとコンパイラにまたがるSTL拡張の経験は何ですか?彼らはまだユビキタスですか?プロジェクトであなたはそれらを使用しますか?
解決
私は、おそらくブースト同等を探して、それを使用します。少なくとも、彼らはユーザーからプラットフォームに依存しないというプレッシャーをいくらか受けています。 GCCとIntelコンパイラーに対してバグを提出し、hash_mapの実装方法の違いを調整するように指示した場合、どうなるか想像できません。せいぜいあなたは彼らにお互いに話させることができるでしょう。それを達成したとしたら、IntelとGCCコンパイラの違いを修正しただけです。数年以内に他の全員を集めて問題を解決してください。
少なくともブーストを使用すると、プラットフォーム間の違いは1つの組織によって解決されます。
編集 同等のブーストは、無秩序セットまたは< href = "http://www.boost.org/doc/libs/1_37_0/doc/html/boost/unordered_map.html" rel = "noreferrer">順序付けられていない地図。 (Head Geekに感謝)
他のヒント
いいえ、十分な規模の組織/プロジェクトであれば、独自に作成します。そうすれば、ニーズに合わせてそれらを調整し、移植性の問題に対処できます。 EAは「eastl」でこれを行いました。すべてのゲームプラットフォーム、PC、Mac、XBOX360、Wii、PS2、PS3などを対象とすることを目的としています。