4

hash_mapとヘッダーはhash_setまだ C++ 標準に含まれていませんが、最近使用したすべてのコンパイラで拡張機能として利用できます。

移植性を犠牲にすることなく、実際のコードでこれらにどれだけ依存できるか疑問に思っています。私は、次のような多くのアーキテクチャとコンパイラで実行する必要があるツール プロジェクトに取り組んでいます。

  • Linux (x86_64、AMD/Intel): GCC、Intel、Portland コンパイラ
  • AIX (電源): GCC、xlC
  • Cray XT シリーズ (AMD): GCC、Portland、Pathscale コンパイラ
  • IBM Blue Gene シリーズ (パワー): xlC、GCC
  • SGI Altix (Itanium): Intel コンパイラ
  • Windows:特に優先事項ではありませんが、有益な回答をお寄せください。

これらのいくつかはかなりエキゾチックだと思いますが、それは重要ではありません。複数のプラットフォームやコンパイラにまたがる STL 拡張機能について、どのような経験がありますか? それらはまだどこにでもありますか?あなたのプロジェクトでそれらを使用しますか?

4

2 に答える 2

13

私はおそらくブースト同等物を探してそれを使用します。少なくとも、プラットフォームに依存しないようにというユーザーからのプレッシャーがあります。GCC および Intel コンパイラに対してバグを報告し、hash_map の実装方法に関する相違点を調整するように指示した場合、どうなるか想像できません。せいぜい、お互いに話をさせることができるでしょう。それを達成したとしても、Intel コンパイラと GCC コンパイラの違いを修正しただけです。頑張って他のみんなを集めて、数年以内に問題を解決してください。

少なくともブーストを使用すると、プラットフォーム間の違いが 1 つの組織によって解決されていることがわかります..

編集 ブーストに相当するものは、明らかにunordered setまたはunordered mapです。(ヘッドオタクに感謝)

于 2009-03-03T19:53:16.150 に答える
5

いいえ、組織/プロジェクトが十分に大きい場合は、独自に作成します。そうすれば、ニーズに合わせて調整し、移植性の問題に対処できます。EA は、すべてのゲーム プラットフォーム、PC、Mac、XBOX360、Wii、PS2、PS3 などをターゲットにすることを意図した「eastl」でこれを行いました...

于 2009-03-03T19:50:42.177 に答える