Question

Les en-têtes hash_map et hash_set ne sont pas encore inclus dans la norme C ++, mais ils sont disponibles en tant qu'extensions avec tous les compilateurs que j'ai utilisés récemment.

Je me demande à quel point je peux compter sur ces éléments dans du code réel sans sacrifier la portabilité. Je travaille sur des projets d’outils devant s’appliquer à de nombreuses architectures et compilateurs, notamment:

  • Linux (x86_64, AMD / Intel): GCC, Intel, Compilateurs Portland
  • AIX (alimentation): GCC, xlC
  • Série Cray XT (AMD): Compilateurs GCC, Portland et Pathscale
  • Série IBM Blue Gene (Alimentation): xlC, GCC
  • SGI Altix (Itanium): Compilateurs Intel
  • Windows: Ce n'est pas vraiment une priorité, mais n'hésitez pas à fournir des réponses utiles.

Je réalise que certaines d’entre elles sont assez exotiques, mais ce n’est pas le propos. Quelles sont vos expériences avec les extensions STL sur plusieurs plates-formes et compilateurs? Sont-ils encore omniprésents? Est-ce que vous les utilisez dans votre projet?

Était-ce utile?

La solution

Je chercherais probablement l'équivalent de boost et l'utiliserais. Au moins, leurs utilisateurs font pression pour qu'ils soient indépendants de la plate-forme. Je ne peux pas imaginer ce qui se produirait si vous déposiez un bogue contre les compilateurs de GCC et d'Intel et leur demandiez de réconcilier leurs différences sur la mise en œuvre de hash_map. Au mieux, vous pourriez les amener à se parler. Supposons même que vous réussissiez cela, vous n'avez alors corrigé que la différence entre les compilateurs Intel et GCC. Bonne chance pour rassembler tout le monde et résoudre le problème en quelques années.

Au moins avec Boost, vous savez que les différences entre les plates-formes sont résolues par une seule organisation.

MODIFIER L’équivalent de boost est apparemment ensemble non commandé ou < a href = "http://www.boost.org/doc/libs/1_37_0/doc/html/boost/unordered_map.html" rel = "noreferrer"> carte non ordonnée . (merci Head Geek)

Autres conseils

NON, vous écrivez vous-même si votre organisation / projet est suffisamment grand. De cette façon, vous pourrez les personnaliser pour mieux répondre à vos besoins et résoudre les problèmes de portabilité. EA a fait cela, avec leur "eastl" destiné à toutes les plates-formes de jeu, PC, Mac, XBOX360, Wii, PS2, PS3 etc ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top