当前位置: 首页 > news >正文

网站建设中啥意思免费的黄冈网站代码

网站建设中啥意思,免费的黄冈网站代码,菜鸟教程wordpress模板,如何分析竞争对手的网站C20增加了三路比较运算符<>&#xff08;戏称航天飞机运算符&#xff09;&#xff0c;用于对类的比较运算符进行统一的设计。有两种使用方式&#xff1a;默认比较对于某些类&#xff0c;如果按照其成员逐一比较即可决定比较运算符的值&#xff0c;那么可以使用默认的三路运…

C++20增加了三路比较运算符<=>(戏称航天飞机运算符),用于对类的比较运算符进行统一的设计。

有两种使用方式:

  1. 默认比较

对于某些类,如果按照其成员逐一比较即可决定比较运算符的值,那么可以使用默认的三路运算符,编译器为为类生成==,!=,<,>,<=,>=

#include <iostream>
#include <string>
using namespace std;class A{
public:A(int d, string s):m_d(d), m_s(s) {}ostream& pOut(ostream &os) const{os<<"A("<<m_d<<","<<m_s<<")";return os;}auto operator<=>(const A&) const = default;
private:int m_d;string m_s;
};ostream& operator <<(ostream &os, const A &a)
{return a.pOut(os);
}void doCompare(const A& d1, const A& d2)
{if(d1 > d2){cout<<d1<<" is bigger than "<<d2<<endl;}else if(d1 == d2){cout<<d1<<" is equal to "<<d2<<endl;}else if(d1 < d2){cout<<d1<<" is smaller than "<<d2<<endl;}
}int main()
{A a1(1, "hi"), a2(1, "hello"), a3(2, "a");doCompare(a1, a2);doCompare(a1, a1);doCompare(a1, a3);return 0;
}
运行程序输出:
A(1,hi) is bigger than A(1,hello)
A(1,hi) is equal to A(1,hi)
A(1,hi) is smaller than A(2,a)

默认的比较运算符将按照成员的顺序先比较m_d然后再比较m_s

如果将m_d与m_s定义的顺序反过来,那么会影响到比较的结果:

#include <iostream>
#include <string>
using namespace std;class A{
public:A(int d, string s):m_d(d), m_s(s) {}ostream& pOut(ostream &os) const{os<<"A("<<m_s<<","<<m_d<<")";return os;}auto operator<=>(const A&) const = default;
private:string m_s;int m_d; 
};ostream& operator <<(ostream &os, const A &a)
{return a.pOut(os);
}void doCompare(const A& d1, const A& d2)
{if(d1 > d2){cout<<d1<<" is bigger than "<<d2<<endl;}else if(d1 == d2){cout<<d1<<" is equal to "<<d2<<endl;}else if(d1 < d2){cout<<d1<<" is smaller than "<<d2<<endl;}
}int main()
{A a1(1, "hi"), a2(1, "hello"), a3(2, "a");doCompare(a1, a2);doCompare(a1, a1);doCompare(a1, a3);return 0;
}
运行程序输出:
A(hi,1) is bigger than A(hello,1)
A(hi,1) is equal to A(hi,1)
A(hi,1) is bigger than A(a,2)
  1. 定制比较

当默认的比较规则不合适时,可以通过定义<=>为类生成统一的比较运算符。

定制比较时可以分为三个级别,对应的返回值类型分别为:

返回类型

是否有无法比较的值

说明

(强序)std::strong_ordering

所有元素都可比较,且有严格的顺序关系(可比较,等值唯一),比如数值

(弱序)std::weak_ordering

所有元素都可比较,但存在近似相等的情况(可比较,等值不唯一),比如大小写字符

(偏序)std::partial_ordering

元素存在不可比较的情况(非全可比较,等值也不唯一),比如void*指针

以下实现一个不区分大小写的字符串比较:

#include <iostream>
#include <string>
using namespace std;auto strToUpper = [](string str)  
{string s = str;transform(s.begin(), s.end(), s.begin(), [](unsigned char c) { return toupper(c); });return s;
};class A{
public:A(string s):m_s(s) {}ostream& pOut(ostream &os) const{os<<"A("<<m_s<<")";return os;}weak_ordering operator<=>(const A& a) const{string sThis = strToUpper(m_s);string sA = strToUpper(a.m_s);if(sThis > sA){return weak_ordering::greater;}else if(sThis < sA){return weak_ordering::less;}return weak_ordering::equivalent;}string m_s;
};ostream& operator <<(ostream &os, const A &a)
{return a.pOut(os);
}void doCompare(const A& d1, const A& d2)
{if(d1 > d2){cout<<d1<<" is bigger than "<<d2<<endl;}else if(d1 < d2){cout<<d1<<" is smaller than "<<d2<<endl;}else{cout<<d1<<" is equal to "<<d2<<endl;}
}int main()
{A a1("hi"), a2("hello"), a3("Hi"), a4("ho");doCompare(a1, a2);doCompare(a1, a3);doCompare(a1, a4);return 0;
}
运行程序输出:
A(hi) is bigger than A(hello)
A(hi) is equal to A(Hi)
A(hi) is smaller than A(ho)

可以看到通过实现了<=>编译器会由此实现其他运算符。

http://www.sczhlp.com/news/48435/

相关文章:

  • 网站seo重庆防控措施持续优化
  • 网站建设怎么销售佛山网络推广培训
  • 用ps怎么做网站步骤微信朋友圈营销方案
  • 巢湖网站建设在线网站seo诊断
  • 网站建设的例子武汉网络推广公司排名
  • 北京网站制作合肥seo快排扣费
  • 做ppt时网站怎么设计搜索引擎优化的意思
  • 提供常州网站优化建个网站费用多少
  • 做货代哪个网站上好找客户搜索引擎推广法
  • 阿里云买域名西安seo优化顾问
  • 做网赌网站需要多少钱如何搜索关键词
  • 学做面包到什么网站上海seo服务外包公司
  • wordpress用户前端发文seo是什么服务器
  • 乌班图系统做网站做关键词排名好的公司
  • 百度竞价网站谁做今天国际新闻大事
  • 做网站需要前台和后台吗湖南营销型网站建设
  • 海报设计素材网站免费电脑培训机构
  • 微信怎样将网站的内容做怎么样做网站推广
  • 360易托管建站工具网站模板之家免费下载
  • 微信网站程序会计培训机构
  • 北京延庆住房和城乡建设委员会网站简单免费制作手机网站
  • 郑州视频网站建设大概多少钱求职seo推荐
  • 淄博微信网站制作营销渠道的三个类型
  • 苏州web网站建设sem工作内容
  • 分布式缓存算法获IEEE时间检验奖
  • 珠海模板网站建设公司常州seo第一人
  • 做的比较好的法律实务培训网站武汉官网优化公司
  • 商务网站创建设计方案网站推广的工作内容
  • 新网站建设方案如何注册域名网站
  • wordpress 建站 电子书免费域名 网站