C++三元表达式 C++三元表达式详情
梁唐 人气:0想了解C++三元表达式详情的相关内容吗,梁唐在本文为您仔细讲解C++三元表达式的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:C++三元表达式,三元表达式,下面大家一起来学习吧。
if-else
语句非常常用,但在进行一些简单逻辑判断的时候,会显得有些不太简洁。特别是在初始化的时候,比如我们有一个变量,某种情况下赋值成a,另外的情况下赋值成b。
使用if-else语句写出来就是:
int cur; if (condition) { cur = a; }else { cur = b; }
这当然是没问题的,只是在大量使用的时候会显得有些繁琐。因此C++当中推出了三元表达式对此进行简化,三元表达式也被称为条件运算符(?:)。
运算符的通用格式如下:
condition ? expression1 : expression2;
问号之前的condition
表示一个逻辑运算,如果结果为true
,返回expression1
的值,否则返回expression2
的值。
使用三元表达式之后,刚才上述的代码可以改写成:
int cur = condition ? a : b;
这样我们就把6行代码压缩成了一行,简化了代码,但也因此了增加了代码阅读的难度。因此只推荐在简单逻辑判断下使用三元表达式,也不推荐嵌套使用,会使得代码非常难以阅读。
最后分享一个我个人特别喜欢的使用三元表达式的场景,就是结构体排序的cmp
函数。
比如我们有这样一个场景,需要使用一个结构体存储两个值x和y,代表一个坐标。我们需要对坐标进行排序,排序的规则是x轴小的在前,如果x轴相等,则y小的在前。
struct P { int x, y; }; P arr[1000];
大家都知道,要对这样的结构体排序,一种做法是我们可以额外实现一个cmp
函数作为sort
排序函数的传参。如果不使用三元表达式,
那么cmp函数是这样的:
bool cmp(const P &a, const P &b) { if (a.x == b.x) { return a.y < b.y; }else { return a.x < b.x; } }
使用三元表达式的话,整个逻辑只有一行:
bool cmp(const P& a, const P& b) { return a.x == b.x ? a.y < b.y : a.x < b.x; }
文章转自:公众号:Coder梁(ID:Coder_LT)
加载全部内容