获取方式:int length = unique(a,a+x)-a;
具体解释这个公式之前我们需要先了解unique()方法
由图可知 unique()返回值指向第一个重复元素的地址,而数组名指向数组的首地址
#include<iostream>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int main(){
int a[] = {0,0,1,1,2,3,4};
cout<<"unique()返回值:\t"<<unique(a,a+7)<<endl;
cout<<"a的返回值:\t"<<a<<endl;
// cout<<"len=unique(a,a+7)-a="<<unique(a,a+7)-a; //很奇怪再次调用输出是7,可能是多次调用地址产生了变化,有明白的朋友还望评论区解答一下
return 0;
}
十六进制地址数转换成十进制相减,再除以单元所占空间就得到新的数组长度
- 即(7208680 - 7208660) / sizeof(int)= 5,5就是去重后我们想要的{0,1,2,3,4}的长度
在实际编程中,直接使用开篇给出的公式,就可以得到新的长度