Использование const char * в карте STXXL - PullRequest
0 голосов
/ 17 марта 2012

Я искал это, но я не смог найти решение.Извините, но это уже опубликованоне POD)

У меня проблема с определением структуры comp_type для const char *.У кого-нибудь есть пример этого?

Вот тот, который я написал:

struct comp_type : public std::less<const char*>
{
        static int max_value()
        {
                return (std::numeric_limits<char>::max)();
        }
};

1 Ответ

1 голос
/ 11 апреля 2012

У меня недостаточно репутации, чтобы комментировать.Поэтому я отправляю ответ.

@ ildjarn: С stxxl вам нужно static T min_value() и static T max_value() в некоторых случаях.

@ Фабрицио: Вы уверены, что хотите сравнитьconst char* с напрямую?Что вы делаете, наследуя от std::less<const char*>.Если вы хотите сравнить две строки, вам понадобится что-то вроде этого:

struct comp_type : public std::binary_function<const char*, const char*, bool>
{
    bool operator ()(const char* left, const char* right)
    {
        return strcmp(left, right) < 0;
    }

    static const char* min_value() { return "\0"; } // I hope this is the minimum

    static const char* max_value() {...} // I don't know of any maximum value
};

Обратите внимание, что это static const char* max_value(), а не static int max_value().Надеюсь, это поможет.

...