【if(x)的详细解释】&【三目运算符的详细解释】&【unique 函数详细解释】

if(x)的详细解释

i f ( x ) if(x) if(x) 的详细代码 d e m o demo demo

#include <bits/stdc++.h>
using namespace std;
int main(){
	int demo;
	cin>>demo;
	if(demo) cout<<"true"<<endl;
	if(demo!=0) cout<<"The answer is right";
	else cout<<"you're lose"<<endl;
	return 0;
}

由此我们可以得出if(x)等同于if(x!=0)

三目运算符的详细解释

标准格式: x ? y : z x?y:z x?y:z

x?y:z 等同于↓
if(x==true) 执行y;
else 执行z;

unique 函数详细解释

unique()函数的头文件是#include <iostream>

unique()函数的作用是将重复的元素添加到容器末尾,从而达到去重的效果

我们可以定义一个end,使end=unique(T,T+n)-n ,那么end即为去重后元素的个数 (PS:T表示为容器变量名n表示为元素个数)

PS:如果容器是从1开始的,那么会导致end++,容器的第0位也会加入排序

我们可以通过下方代码进行demo

#include <bits/stdc++.h>
using namespace std;
int main(){
	int num[10]={};
	for(int i=0;i<10;i++) cin>>num[i];
	int ans=unique(num,num+10)-num;
	cout<<ans<<" "<<ans+num<<endl;
	cout<<"num:10   ";
	for(int i=0;i<10;i++) cout<<num[i]<<" ";
	cout<<endl<<"num:ans   ";
	for(int i=0;i<ans;i++) cout<<num[i]<<" ";
	return 0;
}

在上方代码中,我们可以任意输入 10 10 10 个数(必须呈单调不减),进行去重操作

假设我们输入的数为: 1 1 1 1 2 3 4 4 5 10

我们可以很容易的得到,num[1~6]=1,2,3,4,5,10,且我们可以得到 ans=6 ,如下图所示

其中 0xbc271ffe28unique(num,num+10) 的值,由此我们可以得知这个 函数返回 的其实是去重后尾部值的地址,所以我们需要将它 -n ,以返回正常的值

在这里插入图片描述
如果是从1开始的,就会出错(如下图↓):

这里就没有将所有的去重顺利地运行完成,从而导致出错
在这里插入图片描述
总结代码之前,我们可以进行排序,从而将一个无序的数列,变成一个单调不减的数列

unique 函数详细代码总结code↓
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;//数组边界
int num[maxn]={},n;//需要排序的数组,元素个数n
int main(){
	cin>>n;//输入有多少个元素
	for(int i=0;i<n;i++) cin>>num[i];//输入数组
	sort(num,num+n);//进行排序,保证单调不减
	int end=unique(num,num+n)-num;//进行去重
	for(int i=0;i<end;i++) cout<<num[i]<<" ";//输出最后去重后的答案数列
	return 0;
}

完结撒花QWQ

  • 19
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花火Spark

鼓励,如星光,照亮我创作的前路

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值