gpt4 book ai didi

c++ - 在一组中保存一堆 const char* 的最简单、最安全的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:03 25 4
gpt4 key购买 nike

我想将一堆 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com