Frage

Die hash_map und hash_set Header sind noch nicht in der C ++ Standard enthalten, aber sie sind als Erweiterungen mit allen Compilern ich in letzter Zeit verwendet haben.

Ich frage mich, wie sehr ich auf diesem in echtem Code ohne Portabilität zu opfern verlassen können. Ich arbeite an Tools Projekte, die auf eine Vielzahl von Architekturen und Compiler ausgeführt werden müssen, zB:

  • Linux (x86_64, AMD / Intel): GCC, Intel, Portland Compiler
  • AIX (Power): GCC, xlC
  • Cray XT-Serie (AMD): GCC, Portland, Pathscale Compiler
  • IBM Blue Gene Series (Power): xlC, GCC
  • SGI Altix (Itanium): Intel Compiler
  • Fenster: Nicht wirklich eine Priorität, aber ich fühle mich frei nützliche Antworten geben
  • .

Ich weiß, einige von ihnen ziemlich exotisch sind, aber das ist nicht der Punkt. Was sind Ihre Erfahrungen mit STL-Erweiterungen über mehrere Plattformen und Compiler? Sind sie allgegenwärtig noch? Würde Sie , um sie in Ihrem Projekt verwenden?

War es hilfreich?

Lösung

würde ich wahrscheinlich für den Boost-equivelant suchen und verwenden. Wenigstens haben sie einen gewissen Druck von ihren Nutzern Plattform unabhängig zu sein. Ich kann mir nicht vorstellen, was passieren würde, wenn Sie einen Fehler gegen GCC und Intel Compiler eingereicht und sagte ihnen, ihre Differenzen auf in Einklang zu bringen, wie hash_map umgesetzt wurde. Allenfalls würden Sie sie miteinander reden bekommen können. Angenommen, Sie sogar acheived das, dann haben Sie nur feste wie Intel und GCC Compiler unterschiedlich sind. Viel Glück bekommen alle anderen zusammen und die Lösung des Problems innerhalb von wenigen Jahren.

Mindestens mit Boost kennen Sie irgendwelche Unterschiede zwischen den Plattformen werden .. von einer Organisation ausgearbeitet

Bearbeiten Die Boost-äquivalent ist offenbar ungeordnete Menge oder < a href = "http://www.boost.org/doc/libs/1_37_0/doc/html/boost/unordered_map.html" rel = "noreferrer"> ungeordnete Karte . (Dank Leiter Geek)

Andere Tipps

nein, würden Sie Ihre eigenen schreiben, wenn Sie eine ausreichend große Organisation / Projekt sind. Auf diese Weise können Sie sie anpassen, um besser auf Ihre Bedürfnisse und Anschrift Portabilität Fragen entsprechen. EA tat dies mit ihrem "eastl" alle Spieleplattformen zum Ziel, PC, Mac, XBOX360, Wii, PS2, PS3 etc ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top