(C++17) | ||||
Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
Associative | ||||
Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
Views | ||||
(C++20) | ||||
(C++23) | ||||
Tables | ||||
Iterator invalidation | ||||
Member function table | ||||
Non-member function table |
Member functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Non-member functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Deduction guides(C++17) |
(1) | ||
void unique(); | (since C++11) (until C++20) | |
size_type unique(); | (since C++20) (constexpr since C++26) | |
(2) | ||
template<class BinaryPred> void unique( BinaryPred p); | (since C++11) (until C++20) | |
template<class BinaryPred> size_type unique( BinaryPred p); | (since C++20) (constexpr since C++26) | |
Removes allconsecutive duplicate elements from the container. Only the first element in each group of equal elements is left.
Invalidates only the iterators and references to the removed elements.
Contents |
p | - | binary predicate which returns true if the elements should be treated as equal. The signature of the predicate function should be equivalent to the following: bool pred(const Type1&a,const Type2&b); While the signature does not need to haveconst&, the function must not modify the objects passed to it and must be able to accept all values of type (possibly const) |
Type requirements | ||
-BinaryPred must meet the requirements ofBinaryPredicate. |
(none) | (until C++20) |
The number of elements removed. | (since C++20) |
Ifempty() istrue, no comparison is performed.
Otherwise, given\(\scriptsize N\)N asstd::distance(begin(), end()):
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_list_remove_return_type | 201806L | (C++20) | Change the return type |
#include <iostream>#include <forward_list> std::ostream& operator<<(std::ostream& os,std::forward_list<int>const& container){for(int val: container) os<< val<<' ';return os<<'\n';} int main(){std::forward_list<int> c{1,2,2,3,3,2,1,1,2};std::cout<<"Before unique(): "<< c;constauto count1= c.unique();std::cout<<"After unique(): "<< c<< count1<<" elements were removed\n"; c={1,2,12,23,3,2,51,1,2,2};std::cout<<"\nBefore unique(pred): "<< c; constauto count2= c.unique([mod=10](int x,int y){return(x% mod)==(y% mod);}); std::cout<<"After unique(pred): "<< c<< count2<<" elements were removed\n";}
Output:
Before unique(): 1 2 2 3 3 2 1 1 2After unique(): 1 2 3 2 1 23 elements were removed Before unique(pred): 1 2 12 23 3 2 51 1 2 2After unique(pred): 1 2 23 2 51 24 elements were removed
removes consecutive duplicate elements in a range (function template)[edit] |