在STXXL映射中使用const char*

Using const char* in a STXXL map

本文关键字:const char STXXL 映射      更新时间:2023-10-16

我已经找过了,但一直找不到解决方案。很抱歉,这已经发布了。

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

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

这是我写的:

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

我还没有足够的声誉发表评论。所以我发布了一个回复。

@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 ""; } // 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()。希望这能有所帮助。