Is there a way to remove duplicate characters from a string like they can be removed from vectors as below
sort( vec.begin(), vec.end() );
vec.erase( unique( vec.begin(), vec.end() ), vec.end() );
or do I just have to code up a basic solution for it? What I have thought:
I could add all the characters into a set
Remove a Character from String using std::erase() in C++20 The C++20 introduced a new STL Algorithm, std::erase(container, element), to delete all occurrences of an element from a container. It accepts two arguments, An STL Container from which we need to delete elements. Value of the element to be deleted.
The whole point of C++’ algorithm and container design is that the algorithms are – as far as possible – container agnostic.
So the same algorithm that works on vectors works – of course! – on strings.
std::sort(str.begin(), str.end());
str.erase(std::unique(str.begin(), str.end()), str.end());
The same even works on old-style C strings – with the small difference that you cannot erase
their tails, you need to manually truncate them by re-setting the null terminating character (and there are no begin
and end
member functions so you’d use pointers to the first and one-past-last character).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With