Matlab的unique函数的C++实现

来源:互联网 发布:淘宝直播有什么要求 编辑:程序博客网 时间:2024/04/29 22:12
float * vec_union(float* A_arry, int numA, float * B_arry, int numB)
{

std::sort(A_arry, A_arry + numA);
std::sort(B_arry, B_arry + numA);
vector<float>  v;
v.resize(numA + numB);//先按最大长度声明
vector<float>::iterator it;
it = set_union(A_arry, A_arry + numA, B_arry, B_arry + numB, v.begin()); //结果存在V里,但包含有重复元素
v.resize(it - v.begin());//去除多余元素,v中多余的位置存放0.0
//转换为float数组且统计数量
float* newarray = new float[v.size()];
int count = 0;
for (it = v.begin(); it != v.end(); ++it)
{
newarray[count] = *it;
count++;
}
//对结果进行unique操作,清除相邻的重复值
float* index = unique(newarray, newarray + count);
int countnum = index - newarray;//得到最终有效个数
float* C = new float[countnum]; //存放最后的结果
memcpy(C, newarray, countnum*sizeof(float));
return C;
}
0 0