Вопрос

А hash_map и hash_set заголовки еще не включены в стандарт C++, но они доступны в виде расширений для всех компиляторов, которые я использовал в последнее время.

Мне интересно, насколько я могу полагаться на них в реальном коде, не жертвуя при этом переносимостью.Я работаю над проектами инструментов, которые необходимо запускать на множестве архитектур и компиляторов, в том числе:

  • Linux (x86_64, AMD/Intel): GCC, Intel, Портлендские компиляторы
  • AIX (Мощность): ССЗ, XLC
  • Серия Cray XT (AMD): GCC, Портленд, компиляторы Pathscale
  • Серия IBM Blue Gene (мощность): XLC, GCC
  • SGI Altix (Итаниум): Интел-компиляторы
  • Окна: На самом деле это не приоритет, но не стесняйтесь давать полезные ответы.

Я понимаю, что некоторые из них довольно экзотичны, но дело не в этом.Каков ваш опыт использования расширений STL на разных платформах и компиляторах?Они уже вездесущи?Бы ты использовать их в своем проекте?

Это было полезно?

Решение

Я бы, вероятно, поискал эквивалент повышения и использовал его.По крайней мере, на них оказывается некоторое давление со стороны пользователей, требующих независимости от платформы.Я не могу себе представить, что произойдет, если вы зарегистрируете ошибку в компиляторах GCC и Intel и попросите их урегулировать разногласия по поводу реализации hash_map.В лучшем случае вам удастся заставить их поговорить друг с другом.Предположим, вы даже этого добились, тогда вы всего лишь исправили разницу между компиляторами Intel и GCC.Удачи вам собрать всех вместе и решить проблему в течение нескольких лет.

По крайней мере, с помощью Boost вы знаете, что любые различия между платформами решаются одной организацией.

РЕДАКТИРОВАТЬЭквивалент повышения, по-видимому, неупорядоченное множество или неупорядоченная карта.(спасибо Главному Компьютерщику)

Другие советы

НЕТ, вы бы написали свой собственный, если вы достаточно большая организация/проект.Таким образом, вы сможете адаптировать их так, чтобы они лучше соответствовали вашим потребностям и решали проблемы переносимости.EA сделала это со своим «eastl», предназначенным для всех игровых платформ: ПК, Mac, XBOX360, Wii, PS2, PS3 и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top