Removing Consecutive Duplicates in std::forward_list
How can I remove consecutive duplicate elements from a forward_list?
The unique() member function in std::forward_list removes consecutive duplicate elements from the list. It operates on sorted lists, so it's often used in conjunction with sort().
#include <forward_list>
#include <iostream>
int main() {
std::forward_list<int> list{
1, 2, 2, 3, 3, 3, 4, 4, 5};
list.sort();
list.unique();
for (int i : list) {
std::cout << i << ' ';
}
}1 2 3 4 5By default, unique() uses operator== to compare elements. You can also pass a custom predicate:
#include <forward_list>
#include <iostream>
bool areConsecutive(int first, int second) {
return second == first + 1; }
int main() {
std::forward_list<int> list{
1, 2, 3, 5, 6, 7, 9};
list.unique(areConsecutive);
for (int i : list) {
std::cout << i << ' ';
}
}1 3 5 7 9Here, only consecutive elements that satisfy the areConsecutive predicate are removed.
Linked Lists using std::forward_list
This lesson provides an in-depth exploration of std::forward_list, covering creation, management, and advanced list operations