首页 >后端开发 >C++ >在 C 中使用 `std::tie` 进行元组比较是明智的方法吗?

在 C 中使用 `std::tie` 进行元组比较是明智的方法吗?

Linda Hamilton
Linda Hamilton原创
2024-11-29 17:57:10426浏览

Is Using `std::tie` for Tuple Comparison in C   a Sensible Approach?

使用元组和关系实现比较运算符是一种明智的方法吗?

当面对仅包含两个元素的小型结构时,许多人选择标准对,因为定义的必要性,例如严格弱排序运算符。然而,这种方法因其无信息的变量名称而带来了挑战,特别是在处理多个元素或嵌套对时。

另一种方法是使用来自 Boost 或 C 11 的元组。虽然它们提供了更干净的外观,但它们比较时仍然涉及复杂性。为了寻求更简化的解决方案,一些人考虑通过仅依赖元组操作来规避此问题。

例如,可以使用 tie 编写严格弱排序运算符,它根据提供的参数形成 T&A 引用的元组:

bool operator<(MyStruct const& lhs, MyStruct const& rhs){
  return std::tie(lhs.one_member, lhs.another, lhs.yet_more) <
         std::tie(rhs.one_member, rhs.another, rhs.yet_more);
}

这种优雅的方法可以轻松进行比较操作。然而,考虑缺点仍然很重要。一个问题是当操作者是独立的或朋友时,在这种情况下公共继承可能是必要的。这可能会导致函数或运算符(特别是operator=)被绕过的漏洞。此外,关系可能会排除与排序无关的成员,从而可能引入复杂性。

最终,使用此方法的决定应基于其性能影响。虽然它确实简化了操作符代码,但如果分析表明比较操作很耗时,就会出现问题。否则,维护的便利性可能会超过任何潜在的缺点。

以上是在 C 中使用 `std::tie` 进行元组比较是明智的方法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn