首页 > 解决方案 > C++20 宇宙飞船运算符的性能问题?

问题描述

从 C++20 开始,标准库使用spaceship 运算符来实现字符串和向量的比较(根据此视频)。我担心这会带来潜在的巨大性能损失!

让我解释一下运算符的!=示例string

因此,如果这确实是现在比较字符串的不等式,这不是巨大的性能损失吗?

标签: c++performancecomparisonc++20spaceship-operator

解决方案


标准化委员会已经在http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1185r2.html中解决了这个问题。该更改表示a ==b 和a != b没有调用operator <=>,它们正在调用operator==and operator !=。您描述的行为是后来修订的 C++20 标准的临时版本。

链接的变更请求正好给出std::vector了一个例子,其中==可以比较比<=>.


推荐阅读