您的位置:首页 > 编程语言 > C语言/C++

C++ 泛型算法unique 和unique_copy :删除相邻的重复元素

2015-11-05 22:36 627 查看

std::unique

 
C++
 
Algorithm library
 

Defined in header
<algorithm>


  
template<
class ForwardIt >

ForwardIt unique( ForwardIt first, ForwardIt last
);
(1) 
template<
class ForwardIt, class BinaryPredicate
>

ForwardIt unique( ForwardIt first, ForwardIt last, BinaryPredicate p
);
(2) 
   
Removes all consecutive duplicate elements from the range
[first, last)
and returns a past-the-end iterator for the new
logical end of the range.

eg.

int main(int argc, char* argv[])
{
list<int> ivec1;

for(list<int>::size_type i = 0; i<10 ; ++i)
{
ivec1.push_back(i);
}

ivec1.push_back(9);

cout<<"original content:"<<endl;
for(list<int>::iterator i = ivec1.begin() ; i != ivec1.end() ; ++i)
{
cout<<*i<<endl;
}

vector<int> ivec;

unique_copy(ivec1.begin(),ivec1.end(),back_inserter(ivec));

cout<<"after unique_copy:"<<endl;
for(vector<int>::iterator i = ivec.begin() ; i != ivec.end() ; ++i)
{
cout<<*i<<endl;
}

list<int>::iterator t = unique(ivec1.begin(),ivec1.end());
cout<<"after unique:"<<endl;
for(list<int>::iterator i = ivec1.begin() ; i != t ; ++i)
{
cout<<*i<<endl;
}

return 0;
}
当list 中元素是0,1,2,3,4,5,6,7,8,9,9时后面的输出都是0,1,2,3,4,5,6,7,8,9;

但是当list 中元素是0,1,2,3,4,5,6,7,8,9,5后面的输出都是0,1,2,3,4,5,6,7,8,9,5

结论

======================================

unique 和其copy版本都只能"删除"相邻的重复元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: