转载请注明出处:http://blog.csdn.net/qq844352155
main164.cpp
#include <iostream> #include <vector> #include <algorithm> #include <iterator> static void output(const long &l){ std::cout<<l<<" "; } static int reduce(long ar[],int n) { std::vector<long> arr; int len=n; while(len--) { arr.push_back(ar[len]);//将数组复制过去 } sort(arr.begin(),arr.end()); //std::vector<long>::iterator it; //std::for_each(it=arr.begin(),it!=arr.end(),++it);//不知为何,迭代器会出错,没有相应的模板 std::for_each(arr.begin(),arr.end(),output);//测试排序是否成功 std::cout<<std::endl; /* for(int k=0;k<n;k++)//如果丢失了数组的本质,为何这里又可以? { ar[k]=k;//测试,能否赋值//赋值能成功 std::cout<<ar[k]<<" "; } */ long temp=arr[0];//中间值 long pos=arr[0]; //long pos=-99999;//初始化一个值,保证arr[0]的顺利复制 len=n; ar[0]=temp;//先置ar[0] //ar[1]=100;//测试,为何这里ar就不是一个数组了呢?传递的时候成了指针,丢失了数组的本质了? int count=1;//ar的下标值 int i=1;//arr的下标值 std::cout<<"ar[0]="<<ar[0]<<std::endl; while(i<len+1)//(len)//将arr的值去掉重复后,复制到ar//自己调试一下,看看条件为什么是这个 { if(temp!=pos) { ar[count]=pos;//为了这里ar永远只有一个元素? std::cout<<"ar["<<count<<"]="<<ar[count]<<std::endl; count++; temp=pos;//原来是我把数组长度弄错了,导致了上面的问题 } if(i==len) break; pos=arr[i]; i++; //len--; } //count++; ar[count]='\0';//截断数组 //std::cout<<"ar["<<count<<"]="<<ar[count]<<std::endl; std::cout<<std::endl; for(int k=0;k<count;k++) std::cout<<ar[k]<<" "; return count; //arr=ar; //return n; }; void main164() { using std::cout; using std::endl; using std::cin; long ar1[10]={ 10,12,9,5,6, 9,5,9,7,150 }; long ar2[8]={ 1,5,6,8, 5,6,1,3 }; int len=reduce(ar2,8); cout<<"\nNow is :"<<endl; for(int i=0;i<len;i++) cout<<ar2[i]<<" "; cin.get(); }
——————————————————————————————————————————————————
//写的错误或者不好的地方请多多指导,可以在下面留言或者给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:https://www.royalchen.com/
author:royalchen
Email:royalchen@royalchen.com
———————————————————————————————————————————————————