Как расширить станд.:: tr1:: хеш для пользовательских типов?

древовидные способы

  1. Добавление встроенного определения вашего стиля

http://google.com '; "value =" Roger George Expendables "/> [116 ]

  1. Добавление раздела стиля в ваш HTML и определение класса

    .myClass {background-color: yellow}

    http: //google.com ";» value = "Roger George Expendables" />

  2. Добавление ссылки на таблицу стилей в ваш код

22
задан brianegge 28 May 2010 в 13:29
поделиться

3 ответа

Да, это будет также работать на GCC. Я использую его в большем проекте, и это работает без проблем. Вы могли также обеспечить свой собственный класс хеширования для контейнеров TR1, но определяется что станд.:: tr1:: hash<> класс хеширования значения по умолчанию. Специализация его для пользовательских типов походит на естественный способ расширить стандартную функциональность хеширования.

4
ответ дан 29 November 2019 в 05:24
поделиться

Я пытался разработать точный синтаксис для того, чтобы сделать это с незаказанными ассоциативными контейнерами (также использующий GCC, как OP просил), и поразите этот вопрос.

К сожалению, это не снизилось до уровня детализации, который я хотел. Путем просмотра gcc заголовков в том, как они реализовали стандартные хеш-функции, я получил его работа. Ввиду недостатка примеров (по крайней мере, во время записи) в сети я думал, что это будет столь же хорошим местом как любой для регистрации моего собственного примера (который я могу подтвердить работы с GCC):


namespace std { namespace tr1
{
   template <>
   struct hash<MyType> : public unary_function<MyType, size_t>
   {
       size_t operator()(const MyType& v) const
       {
           return /* my hash algorithm */;
       }
   };
}}

(уведомление существует два пространства имен здесь - это - просто моя конвенция для сворачивания вложенных пространств имен),

21
ответ дан 29 November 2019 в 05:24
поделиться

Поскольку Вы не добавляете к std пространство имен библиотеки, но только обеспечиваете специализации, тогда оно совершенно в порядке.

, Если Вы хотите обеспечить больше универсального подхода хеширования (например, хеш для кортежей в целом) тогда, взглянули на Fusion Повышения. Вот простой пример , который будет работать на большинство случаев (вероятно, за исключением для кортежа кортежей)

3
ответ дан 29 November 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: