有没有办法在保持顺序的同时从包含字符串元素的向量容器中删除重复元素.
直到现在我已经使用了set方法,但它没有保留顺序.
我不知道如何使用remove_if来解决这个问题.
如何使用临时容器:
std::vector< int >::iterator i , j ;
std::set< int > t_set;
for( i = v.begin() , j = v.begin() ; i != v.end() ; ++i )
if( t_set.insert( *i ).second)
*j++ = *i ;
v.erase( j , v.end() );
Run Code Online (Sandbox Code Playgroud)
使用std::remove_if,我能想到这个:
std::set<int> t_set;
std::vector<int> res; //Resultant vector
remove_copy_if(v.begin(), v.end(), std::back_inserter(res),
[&t_set](int x){
return !t_set.insert(x).second;
} );
Run Code Online (Sandbox Code Playgroud)