gpt4 book ai didi

c++ - 为什么在 C++ 20 中从标准库容器中删除了比较运算符?

转载 作者:行者123 更新时间:2023-12-01 12:01:41 25 4
gpt4 key购买 nike

我在浏览cppreference看到了 vector C++20 中删除了 的比较操作,并引入了飞船运算符 ( <=> )。对于许多其他标准库容器,如 set ,也可以看到同样的事情。和 map .

如何在新标准中进行比较?另外,C++20 会开始在旧代码上出错吗?

最佳答案

如果你继续在引用网站上浏览一点,你可能会来到default comparisons这个部分。 ,它简单地说:

In brief, a class that defines operator<=> automatically gets compiler-generated operators <, <=, >, and >=.



因此,如果某个类存在“ spaceship ”运算符,编译器将使用 <=> 的结果自动生成剩余的比较运算符。运算符(operator)。

请注意 ==不生成运算符(即使它应该是可能的),但是 std::vector保持 operator== 的过载.

至于:

will C++ 20 start giving errors on older codes ?



不,不会。

当您使用 C++20 编译器构建时,与其一起使用的标准库也应该为 C++20 制作,从而实现 <=>运算符,然后将按上述说明使用。

但是,如果您使用 C++20 编译器来构建较旧的标准库,则该较旧的标准库仍将实现较旧的比较运算符。

关于c++ - 为什么在 C++ 20 中从标准库容器中删除了比较运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60999163/

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