在STXXL映射中使用const char *

时间:2012-03-17 01:40:31

标签: c++ stxxl

我已经找到了,但我找不到解决方案。对不起,这已经发布了。

我必须创建一个stxxl :: map结构,将const char *映射到const char *(最好将字符串转换成字符串,但我知道stxxl容器不接受非POD)

我在定义const char *的comp_type结构时遇到问题。有人有这样的例子吗?

这是我写的那个:

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

1 个答案:

答案 0 :(得分:1)

我还没有足够的声誉发表评论。所以我发帖回复。

@ildjarn:对于stxxl,在某些情况下您需要static T min_value()static T max_value()

@Fabrizio:您确定要直接比较两个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()。希望这会有所帮助。