#include    <iostream  >  
#include    <algorithm  >  
#include    <vector  >  
using  namespace  std;  
 
int  main()  
{  
 
       int  a[3]={1,2,3},y[3]={6,7,8};  
       vector  <int  >  vec(a,a+3);    //存储数组a[]的元素到vec中去
       vector  <int >   vec1(y,y+3);   //存储数组y[]的元素到vec中去 
       vector  <int  >  vec2;  
       int  b[100];  
 
       for(int  i=0;i  <vec.size()-1;i++){  
               
       vec2.push_back(vec[i]);//将a元素结果存入vec2中  
           }  
       for(  i=0;i  <vec1.size()-1;i++){  
               
       vec2.push_back(vec1[i]);//将y元素结果存入vec2中  
           }  
     
       sort(vec2.begin(),vec2.end());    //将VEC2里的元素排序  
       unique(vec2.begin(),vec2.end());//将重复的元素去掉  
       unique_copy(vec2.begin(),vec2.end(),b);//将元素copy到数组b[]中去  
 
       for(i=0;i  <vec2.end()-vec2.begin()-1;i++)  //显示最终结果  
             cout  <<b[i]  <<' ';  
       
           return  0;  
}  在vc++6.0下预定的结果为1,2,3,6,7,8
为什么结果却是1,2,6    请帮忙指点.

解决方案 »

  1.   

    把所以的-1都去掉!
    #include    <iostream>  
    #include    <algorithm>  
    #include    <vector>  
    using  namespace  std;  
     
    int main()  
    {  
     
           int  a[3]={1,2,3},y[3]={6,7,8};  
           vector  <int>  vec(a,a+3);    //存储数组a[]的元素到vec中去
           vector  <int>  vec1(y,y+3);   //存储数组y[]的元素到vec中去 
           vector  <int>  vec2;  
           int  b[100];  
     
           for(int i=0;i<vec.size();i++)
       {                 
       vec2.push_back(vec[i]);//将a元素结果存入vec2中  
           }  
           for(  i=0;i<vec1.size();i++)
       {  
           vec2.push_back(vec1[i]);//将y元素结果存入vec2中  
           }  
         
           sort(vec2.begin(),vec2.end());    //将VEC2里的元素排序  
           unique(vec2.begin(),vec2.end());//将重复的元素去掉  
           unique_copy(vec2.begin(),vec2.end(),b);//将元素copy到数组b[]中去  
     
           for(i=0;i<vec2.end()-vec2.begin();i++)  //显示最终结果  
                cout<<b[i]<<' ';  
           
               return  0;  
    }  大哥,I 服了 You!
      

  2.   

    再帮忙看看下面的代码:
    #include    <iostream  >  
    #include    <algorithm  >  
    #include    <vector  >  
    using  namespace  std;  
     
    int  main()  
    {  
     
           int  a[4]={34,56,78,90};  
           vector  <int  >  vec(a,a+4);    //存储数组a[]的元素到vec中去  
           vector  <int  >  vec2;  
           int  b[100];  
     
           for(int  i=0;i  <vec.size()-1;i++){  
                 for(int  j=i+1;j  <vec.size();j++)  
                 vec2.push_back(abs(vec[i]-vec[j]));//将相减的结果存入vec2中  
               }  
         
           sort(vec2.begin(),vec2.end());    //将VEC2里的元素排序  
           unique(vec2.begin(),vec2.end());//将重复的元素去掉  
           unique_copy(vec2.begin(),vec2.end(),b);//将元素copy到数组b[]中去  
     
           for(i=0;i  <vec2.end()-vec2.begin();i++)  //显示最终结果  
                 cout  <<b[i]  <<' ';  
           
               return  0;  

    是将一个数组中不同元素两两相减,取正数值,去掉相同数,放入另一数组;
    这段代码的结果应为:12,22,44,66
    而程序运行后结果为: 12,22,34,44,56,-85993460 这是为什么?
      
      

  3.   

    都是一些邊界值的問題,Debug 一下,仔細點就可以搞定。
      

  4.   

    我已debug,循环时i=5时,结果为-85993460 ,可循环为for(int  i=0;i  <vec.size()-1;i++)我不知怎样改?