首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

unique()函数结果解决方案

2012-04-12 
unique()函数结果#include numeric#include vector#include algorithm#include iostreamusing nam

unique()函数结果
#include <numeric>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;


int main( )
{
  vector <int> ivec; 
  ivec.push_back(6); 
  ivec.push_back(2);
  ivec.push_back(5);
  ivec.push_back(4);
  ivec.push_back(2);
  ivec.push_back(5);
  vector<int>::iterator iter;
  for(iter=ivec.begin();iter!=ivec.end();iter++)
cout<<*iter<<" ";
  cout<<" the 1"<<endl;
  cout<<endl;

  sort(ivec.begin(),ivec.end());
  for(iter=ivec.begin();iter!=ivec.end();iter++)
cout<<*iter<<" ";
  cout<<" the 2"<<endl;

  unique(ivec.begin(),ivec.end());
  for(iter=ivec.begin();iter!=ivec.end();iter++)
cout<<*iter<<" ";
  cout<<" the 3"<<endl;
  cout<<endl;
  return 0;
}

结果:unique()后的输出(2 4 5 6 5 6)为什么有错?
unique()输出应该是怎样:2 4 5 6 5 2还是应该是2 4 5 6 2 5 ???

[解决办法]
函数不会用就百度或者google
unique() 前面的数是唯一,后面的部分是随机的(但都是前面的数)
[解决办法]
你再多插入几个数,看看结果就有体会了
[解决办法]
unique(ivec.begin(),ivec.end())
=>
remove(unique(ivec.begin(),ivec.end()),ivec.end());
对于vector,unique并没有删除数据,只是将重复数据移到最后。

[解决办法]
对vector sort之后成了 2 2 4 5 5 6,unique只是将相同的成员向前移位,直接覆盖前一个位置,返回的是新的end,后面没有覆盖的数据保持不变,因为unique之后的容器就成了 2 4 5 6 5 6(最后2个数不变,而不是所谓的随机数)

热点排行