I have forgotten

• https://me.yahoo.com

# unique

Removes adjacent duplicates (elements that are equal to their predecessor)
View version details

### Key Facts

Gyroscopic Couple: The rate of change of angular momentum () = (In the limit).
• = Moment of Inertia.
• = Angular velocity
• = Angular velocity of precession.

Blaise Pascal (1623-1662) was a French mathematician, physicist, inventor, writer and Catholic philosopher.

Leonhard Euler (1707-1783) was a pioneering Swiss mathematician and physicist.

## Definition

The unique() algorithm is defined in the standard header <algorithm> and in the nonstandard backward-compatibility header <algo.h>.

## Interface

#include <algorithm>
template < class ForwardIterator >
ForwardIterator unique(
ForwardIterator first,
ForwardIterator last
);
template < class ForwardIterator, class Predicate >
ForwardIterator unique(
ForwardIterator first,
ForwardIterator last,
Predicate comp
);

Parameters:
Parameter Description
first A forward iterator addressing the position of the first element in the range to be scanned for duplicate removal
last A forward iterator addressing the position one past the final element in the range to be scanned for duplicate removal
comp User-defined predicate function object that defines the condition to be satisfied if two elements are to be taken as equivalent. A binary predicate takes two arguments and returns true when satisfied and false when not satisfied

## Description

Unique algorithm transforms a sequence such as each duplicate consecutive elements become a unique element.

The first version uses operator== to compare the elements, the second version uses the given binary predicate comp.

## Return Value

The return value is an iterator pointing to the end of the collapsed range.

## Complexity

The complexity is linear; performs (last - first) - 1 applications of operator== (for the first version) or of comp (for the second version).

### References

Example:
##### Example - unique algorithm
Problem
This program illustrates the use of the STL unique() algorithm (default version) to remove adjacent duplicate copies of integer values from a vector of integers.
Workings
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
int a1[] = {1, 2, 2, 3, 3, 6, 5, 2, 6, 9, 12, 2, 2, 2, 9, 10, 11, 12};
vector<int> v1(a1, a1+18);
cout <<"\nHere are the values in the first vector:\n";
for (vector<int>::size_type i=0; i<v1.size(); i++)
cout <<v1.at(i)<<" ";

cout <<"\nNow we remove all adjacent duplicate copies of the "
"\nvalues 2 and 3 and redisplay the values to confirm:\n";
vector<int>::iterator new_end = unique(v1.begin(), v1.end());
vector<int>::iterator p = v1.begin();
while (p != new_end) cout << *p++ << " ";

int a2[] = {1, 1, 2, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7, 8, 9, 10, 10, 10};
vector<int> v2(a2, a2+18);
cout <<"\nHere are the values in the second vector:\n";
for (vector<int>::size_type i=0; i<v2.size(); i++)
cout <<v2.at(i)<<" ";

cout <<"\nNow we remove all adjacent duplicate copies of any "
"\nof the values and redisplay the values to confirm:\n";
new_end = unique(v2.begin(), v2.end());
p = v2.begin();
while (p != new_end)
cout <<*p++<<" ";

return 0;
}
Solution
Output:

Here are the values in the first vector: 1 2 2 3 3 6 5 2 6 9 12 2 2 2 9 10 11 12

Now we remove all adjacent duplicate copies of the
values 2 and 3 and redisplay the values to confirm: 1 2 3 6 5 2 6 9 12 2 9 10 11 12

Here are the values in the second vector: 1 1 2 2 2 3 4 5 5 5 6 7 7 8 9 10 10 10

Now we remove all adjacent duplicate copies of any
of the values and redisplay the values to confirm: 1 2 3 4 5 6 7 8 9 10
References