在 C 中在编程中,将 STL 映射与用户定义的类一起使用常常会遇到神秘的编译器错误。具体来说,错误消息“与‘operator
错误消息表明编译器无法找到运算符
而不是定义运算符
struct Class1Compare { bool operator() (const Class1& lhs, const Class1& rhs) const { return lhs.id c2int;对于用户定义的类型,可以创建一个比较器函数对象类。此类实现了operator()的专门版本,用于确定用户定义类型的相对顺序。然后可以专门使用此比较器来映射映射:
解决方案 2:专门化 std::less
namespace std { template struct less<class1> { bool operator() (const Class1& lhs, const Class1& rhs) const { return lhs.id 另一种选择是专门为用户定义的 std::less 模板类型。这为 std::less 类中的 operator() 提供了自定义定义:<p></p> <h3>这种方法允许映射默认为 std::less 进行比较,同时为用户提供特定的实现 -定义类型。</h3> <p>结论</p>使用 STL 映射和用户定义类型时,必须提供一种比较键的方法。这可以通过比较器函数对象或专门化 std::less 来实现。通过满足这一要求,开发人员可以有效地利用以用户定义类型作为键的映射。</class1>
以上是如何使用用户定义类型作为 C std::maps 中的键?的详细内容。更多信息请关注PHP中文网其他相关文章!