我想把一堆const char指针放到std :: set容器[1]中.std :: set模板需要比较器函数,标准C++库提供std :: less,但它的实现基于直接比较两个键,这不是指针的标准.
我知道我可以定义自己的仿函数并通过将指针转换为整数并比较它们来实现operator(),但是有一种更清晰,"标准"的方法吗?
请不要建议创建std :: strings - 这是浪费时间和空间.字符串是静态的,因此可以根据它们的地址比较(in)相等.
1:指针是静态字符串,因此它们的生命周期没有问题 - 它们不会消失.
如果您不想将它们包装在std::string
s中,您可以定义一个仿函数类:
struct ConstCharStarComparator { bool operator()(const char *s1, const char *s2) const { return strcmp(s1, s2) < 0; } }; typedef std::setstringset_t; stringset_t myStringSet;