作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想将一堆 const char 指针保存到一个 std::set 容器中 [1]。 std::set 模板需要一个比较仿函数,标准 C++ 库提供了 std::less,但它的实现是基于直接比较两个键,这不是指针的标准。
我知道我可以定义自己的仿函数并通过将指针转换为整数并比较它们来实现 operator(),但是是否有更简洁、“标准”的方式来实现它?
请不要建议创建 std::strings - 这是浪费时间和空间。字符串是静态的,因此可以根据它们的地址比较它们是否相等。
1:指针指向静态字符串,因此它们的生命周期没有问题——它们不会消失。
最佳答案
如果您不想将它们包装在 std::string
中,您可以定义一个仿函数类:
struct ConstCharStarComparator
{
bool operator()(const char *s1, const char *s2) const
{
return strcmp(s1, s2) < 0;
}
};
typedef std::set<const char *, ConstCharStarComparator> stringset_t;
stringset_t myStringSet;
关于c++ - 在一组中保存一堆 const char* 的最简单、最安全的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/235326/
我有 json 数据: { "products": [ { "productId" : 0, "productImg" : "../img/product-ph
我是一名优秀的程序员,十分优秀!