Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >宇宙飞船操作员的实际使用实例

宇宙飞船操作员的实际使用实例
EN

Stack Overflow用户
提问于 2019-01-23 03:41:56
回答 2查看 2.4K关注 0票数 6

宇宙飞船运算符的定义意味着有一个强有力的排序定义,但这是否会影响客户端代码的编写方式,或者如何定义类比较操作符?

由于在另一篇文章中缺少真实世界的例子,我没有完全理解这个部分。

其他关于宇宙飞船操作员的帖子:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-23 04:05:15

<=>允许懒惰的方式也是表演的方式。您不会更改客户端代码。

当存在using std::rel_ops (或boost::ordered等)时,客户端可能会看到性能方面的好处。

一个例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// old and busted
struct Person : boost::totally_ordered<Person>
{
    std::string firstname;
    std::string lastname
    bool operator<(const Person & other) 
    { 
        return std::tie(firstname, lastname)
             < std::tie(other.firstname, other.lastname); 
    }
}

// new hotness
struct Person
{
    std::string firstname;
    std::string lastname;
    auto operator<=>(const Person &) = default;
}

int main()
{
    Person person1 { "John", "Smith" };
    Person person2 { "John", "Smith" };
    std::cout << person2 <= person1 << std::endl;
}
票数 4
EN

Stack Overflow用户

发布于 2019-01-23 05:35:30

你只需比较一下你一直以来的做法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a < b

只是在幕后,该表达式的候选函数之一也会找到(a <=> b) < 0,如果该候选函数存在并且恰好是最佳可行的候选函数,那么它就会被调用。

您通常不会在“客户端代码”中直接使用<=>,只需直接使用所需的比较。

例如,考虑到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct X {
    int i;

    // this can be = default, just writing it out for clarity
    strong_ordering operator<=>(X const& rhs) const { return i <=> rhs.i; }
};

表达式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X{42} < X{57};

将评估为X{42} <=> X{57} < 0 (没有<候选,因此<=>无反转是最合适的)。X{42} <=> X{57}计算为42 <=> 57,即strong_ordering::less< 0返回true。因此,最初的表达式是true..。如预期的那样。

同样的运算符也直接给出了X{57} > X{42}X{3} >= X{2},等等。

<=>的优点是您只需要编写一个操作符而不是四个操作符,该运算符通常比<更容易编写,您可以正确地表示偏序和全序之间的区别,并且堆叠它通常具有更高的性能(例如,在string这样的情况下)。

此外,我们不必生活在这个奇怪的世界里,每个人都假装operator<是唯一存在的关系运算符。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54326473

复制
相关文章
iterm2(zsh)粘贴慢解决办法
# .zshrc pasteinit() { OLD_SELF_INSERT=${${(s.:.)widgets[self-insert]}[2,3]} zle -N self-insert
ACK
2022/05/10
7380
IE之页面加载慢.
场景 场景是大屏页面一张深色背景, 里面一些文本元素以及图表展示. 结果在IE下发现加载异常缓慢, 还有部分人员反馈页面卡死. 后台读写优化 默认处理图片逻辑是, ImageIO读取原图, 转成byt
用户1216491
2018/01/24
2.4K0
idea使用debug模式启动非常慢
后来发现,之前在调试代码时不注意给属性加了断点,去掉idea的Breakpoints里的java field watchpoints就不卡了,如下:
凯哥Java
2022/12/16
2.2K0
idea使用debug模式启动非常慢
ntpdate同步时间慢
随着时间的推移,计算机的时钟会倾向于漂移. 网络时间协议 (NTP) 是一种确保您的时钟保持准确的方法。当硬件设备不带电池和无RTC的时候,基本靠网络时间协议来进行同步时间
程序手艺人
2019/02/21
3.6K0
Xshell/Xftp连接Linux速度非常慢(已解决)
1、打开sshd服务的配置文件/etc/ssh/sshd_config,把UseDNS yes改为UseDNS no
Arebirth
2020/06/19
5.4K0
Android Studio导入项目非常慢的解决办法
问题     Android Studio目前已经更新到2.0 Preview 6了,作为Google大力推崇的开发工具,相对于Eclipse ADT有着不可比拟的优势。然而在实际使用时,依然有不少不爽的地方。Android Studio原生支持使用Gradle来构建项目本是个不错的想法,使用动态语言Groovy定义项目构建过程,避免了build.xml文件的繁琐定义。但是Gradle的二进制包体积较大,而且用户可能按照了不同的Gradle版本,构建时可能会出现各种问题。因此又提出了Gradle Wrapp
24K纯开源
2018/01/18
1.4K0
Android Studio导入项目非常慢的解决办法
WordPress后台加载慢的快速优化方法
WordPress后台加载慢,一般与WordPress程序加载海外资源有关,这里推荐安装一个简单易用的插件来进行优化。
超级小可爱
2023/02/20
8970
Ghost 解决 jsdelivr 资源加载慢的问题
用了很久的自建 Ghost 博客系统不知道从哪个版本开始,页面加载速度忽然变慢了很多。看了下加载的资源,发现多了很多走 jsdelivr cdn 的资源,加载速度竟然长达半分钟。。。
mythsman
2023/03/08
2.2K0
Ghost 解决 jsdelivr 资源加载慢的问题
WordPress后台加载慢的快速优化方法
WordPress后台加载慢,一般与WordPress程序加载海外资源有关,这里推荐安装一个简单易用的插件来进行优化。
用户7491502
2021/06/24
3.7K0
WordPress后台加载慢的快速优化方法
大表分页查询非常慢,怎么办?
在实际的软件系统开发过程中,随着使用的用户群体越来越多,表数据也会随着时间的推移,单表的数据量会越来越大。
Java极客技术
2022/12/04
1.5K0
大表分页查询非常慢,怎么办?
为什么我的Redis这么“慢”?
Redis 作为内存数据库,拥有非常高的性能,单个实例的 QPS 能够达到 10W 左右。
架构师修行之路
2020/08/20
3.7K0
【Android】再来一篇Fragment的懒加载(只加载一次哦)
2017-7-14更新: 目前有人使用后出现了诸如首次打开显示空白界面,但点击有反应;或来回切换又变空白界面的问题。这些问题我暂时还不知道该怎么解决,后期有时间时会具体去分析下问题该怎么解决。所以你如果要使用该代码,希望考虑一下,我自己的小应用目前是没碰到这些问题。
请叫我大苏
2018/05/17
1.6K0
我先入坑啦,等你哦!
1.完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
夕梦
2021/06/07
3640
我先入坑啦,等你哦!
为啥我的Python这么慢 (一)
在Python系列教程中,我们提到一个概念字符串是不可修改的。这一点可以通过id函数来判断确实是对的。但是这个概念会对我们写作程序有什么影响一直没有特别深的理解。 直到有一次,实验室一个朋友要读基因组数据,结果发现3 G的基因组读一晚上都没读完,就很诧异,看了下代码,这么写的。 基因组序列是GRCh38.fa,FASTA格式,序列行每行70个字符,共44,284,892行 (记住行数有多大),示例如下。 >chr1 NNNNN...(60个N)...NNNNN ACGTA...(60个Nt)...ACGTA
生信宝典
2018/02/05
6490
css加载慢导致加载瞬间白屏(dom比css加载快导致)
2,css样式压缩下,用sass编译一下,放在head顶部,head再用incloud包起来,放在文件夹;
kirin
2020/11/30
2.2K0
还原我的图床数据库,哦耶~
之前的服务器到期后,用了两年的服务器,里面的东西还是蛮多的。我的网站博客,图床,和一些搭建的其他网站。最后我虽然给所有的东西都迁移了,唯独这个图床没有成功迁移,打开网站地址,报错。
废江_小江
2022/09/05
3170
使用 JS 监听加载,避免谷歌广告拖慢网页的加载速度
如果我的网页上有多个广告单元,把该段引入 JS 的代码 放到 head 里 既可以达到一次载入 JS 所有 ins 都可以接到广告,或者还可以使用 JS 监听的方式加载。
Yangsh888
2022/03/28
2.1K0
100%解决github加载慢、github加速
.NET Core Community是一个基于并围绕着 .NET 技术栈展开组织和活动的非官方、非盈利性的民间开源社区,提供了很多优秀的 .NET 开源项目。
老九
2021/08/13
3.2K0
启用Windows防火墙后,FTP传输非常慢
我们有一个计划任务,该任务使用Windows命令行FTP程序在两个Windows服务器之间传输大文件(〜130 MB)。速度很慢(大约需要30分钟),有时会在传输完成之前终止。服务器是2003年(发送)和2008年(接收)。
镭速
2023/06/01
7790
点击加载更多

相似问题

展示主题哦-我-zsh

45

bash,zsh :声明[*] (哦,我的)

13

写自己的哦-我-zsh插件

13

哦,我的ZSH & Vim插入光标

12

哦-我的-zsh历史日期格式

124
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文