CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Sat, 19 Jul 2025 16:31:39 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/forward_list/forward_list/unique/
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 19 Jul 2025 16:31:39 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"8db2-1m/pVlokCNupdHNTHoPRFt2Dyu8"
Content-Encoding: gzip
The version with no parameters (1), removes all but the first element from every consecutive group of equal elements in the container.
Notice that an element is only removed from the forward_list container if it compares equal to the element immediately preceding it. Thus, this function is especially useful for sorted lists.
The second version (2), takes as argument a specific comparison function that determine the "uniqueness" of an element. In fact, any behavior can be implemented (and not only an equality comparison), but notice that the function will call binary_pred(*i,*(i-1)) for all pairs of elements (where i is an iterator to an element, starting from the second) and remove i from the forward_list if the predicate returns true.
The elements removed are destroyed.
Output:
All other iterators, pointers and references keep their validity.
The elements removed are modified. Concurrently accessing or modifying other elements is safe, although iterating through the container is not.
Otherwise, if an exception is thrown, the container is left in a valid state (basic guarantee).
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
<forward_list>
-
forward_listC++11
forward_list
-
forward_list::~forward_listC++11
-
forward_list::forward_listC++11
member functions
-
forward_list::assignC++11
-
forward_list::before_beginC++11
-
forward_list::beginC++11
-
forward_list::cbefore_beginC++11
-
forward_list::cbeginC++11
-
forward_list::cendC++11
-
forward_list::clearC++11
-
forward_list::emplace_afterC++11
-
forward_list::emplace_frontC++11
-
forward_list::emptyC++11
-
forward_list::endC++11
-
forward_list::erase_afterC++11
-
forward_list::frontC++11
-
forward_list::get_allocatorC++11
-
forward_list::insert_afterC++11
-
forward_list::max_sizeC++11
-
forward_list::mergeC++11
-
forward_list::operator=C++11
-
forward_list::pop_frontC++11
-
forward_list::push_frontC++11
-
forward_list::removeC++11
-
forward_list::remove_ifC++11
-
forward_list::resizeC++11
-
forward_list::reverseC++11
-
forward_list::sortC++11
-
forward_list::splice_afterC++11
-
forward_list::swapC++11
-
forward_list::uniqueC++11
-
non-member overloads
- Reference
- <forward_list>
- forward_list
- unique
public member function
<forward_list>
std::forward_list::unique
(1) | void unique(); |
---|---|
(2) | template <class BinaryPredicate> void unique (BinaryPredicate binary_pred); |
Remove duplicate values
Notice that an element is only removed from the forward_list container if it compares equal to the element immediately preceding it. Thus, this function is especially useful for sorted lists.
The second version (2), takes as argument a specific comparison function that determine the "uniqueness" of an element. In fact, any behavior can be implemented (and not only an equality comparison), but notice that the function will call binary_pred(*i,*(i-1)) for all pairs of elements (where i is an iterator to an element, starting from the second) and remove i from the forward_list if the predicate returns true.
The elements removed are destroyed.
Paramaters
- binary_pred
- Binary predicate that, taking two values of the same type than those contained in the forward_list, returns true to remove the element passed as first argument from the container, and false otherwise.
This shall be a function pointer or a function object.
Return value
noneExample
|
|
Output:
mylist contains: 3.14 15.2 69.2 |
Complexity
Linear in container size minus one.Iterator validity
Iterators, pointers and references referring to elements removed by the function are invalidated.All other iterators, pointers and references keep their validity.
Data races
The container is modified.The elements removed are modified. Concurrently accessing or modifying other elements is safe, although iterating through the container is not.
Exception safety
If binary_pred or the comparison of elements is guaranteed to not throw, the function never throws exceptions (no-throw guarantee).Otherwise, if an exception is thrown, the container is left in a valid state (basic guarantee).
See also
- forward_list::remove
- Remove elements with specific value (public member function)
- forward_list::remove_if
- Remove elements fulfilling condition (public member function template)
- forward_list::erase_after
- Erase elements (public member function)
- forward_list::pop_front
- Delete first element (public member function)
- forward_list::sort
- Sort elements in container (public member function)
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us