[STL Unique] regarding the duplicated elements
Question on what happens to the extra elements that are found to be duplicates. Specifically, the last sentence in the following paragraph.
Quote:
http://www.sgi.com/tech/stl/unique.html
Every time a consecutive group of duplicate elements appears in the range [first, last), the algorithm unique removes all but the first element. That is, unique returns an iterator new_last such that the range [first, new_last) contains no two consecutive elements that are duplicates. [1] The iterators in the range [new_last, last) are all still dereferenceable, but the elements that they point to are unspecified.
So it's dereferenceable but you get garbage for those elements?
in SGI's example, they created new iterator.
vector<int>::iterator new_end = unique(V.begin(), V.end());
what if I reused the end() iterator?
V.end() = unique(V.begin(), V.end());
is this causing memory leak from the new end() to the old end()?
Let's say there are 10 total elements and 5 are duplicates. So according to the SGI description, the size() will still be 10 after unique. What's the preferred way to get the right size? do you always have to involve an extra erase command after unique?