Subject: Re: [boost] best way to remove duplicates from forwardIterator [startIter, endIter]
From: Sandeep Gupta (gupta.sandeep_at_[hidden])
Date: 2009-02-26 11:10:56
On Wed, Feb 25, 2009 at 1:18 PM, Damian Coventry
> std::unique will do what you want. But it comes with a conditions though...
> You must have 'consecutive equal elements'
> std::unique can't be used on an associative container
> If you can't satisfy these requirements, you could try inserting all your
> data into a set<>, as Dave suggests. Then copying it all into a vector<> and
> calling unique() on it.
> Perhaps you could copy from the set<> into a list<>, then use the set
> class's unqiue() member, as it's more efficient due to relinking ptrs and
> not assigning element values.
Not sure if I understood correctly. Stl set is a "Unique Associative
Container". Hence storing them in set will remove duplicates
automatically. there wont be any need to call unique on the set
> On Wed, Feb 25, 2009 at 6:22 AM, David Abrahams <dave_at_[hidden]> wrote:
>> on Tue Feb 24 2009, Sandeep Gupta <gupta.sandeep-AT-gmail.com> wrote:
>> > Hi,
>> > Given a collection in terms of [startIter, endIter] how can obtain
>> > [uniqBeginIter, uniqEndIter] that represents unique elements of the
>> > original container.
>> > I can always explicitly instantiate a set S of [startIter, endIter]
>> > and use [S.begin(), S.end()]. Is it possible to express this in terms
>> > of algorithms.
>> > Please note that I won't be able to use std::sort as startIter does
>> > not conform to RandomAccessIterator. Its a forward iterator.
>> If they are not already arranged so that all the equal elements are
>> adjacent to one another, your best bet is set<> (or unordered_set<>).
>> FWIW, It is possible to write a conforming std::sort that works on
>> forward iterators, but for some reason the standard only requires sort
>> to work on random access iterators.
>> Dave Abrahams
>> BoostPro Computing
>> Unsubscribe & other changes:
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk