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
,如下图所示
其中 0xbc271ffe28
是 unique(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;
}