Re: STL: how to get the sequence number of a newly added item into a set
On 2008-05-26 01:34:32 -0400, "bilgekhan"
<bilgekhan@bilgekhanbilgekhan.net.tr> said:
"Daniel T." <daniel_t@earthlink.net> wrote:
"bilgekhan" <bilgekhan@bilgekhanbilgekhan.net.tr> wrote:
After doing a succcessful insert() or find() on a set<T> container
is it possible to get the item number of this item in the set?
(ie. its zero-based sequence number (position/location/rank/index)
within the sorted collection)
Additional info:
insert() returns a pair<T> and find() returns an iterator.
Using any of these two objects is it possible to get the
sequence number of the item these objects point to?
After the insert() or find() the container won't be modified.
set<int>::iterator it = s.insert( x ).first;
// or = s.find( x );
int seqNumb = distance( s.begin(), it );
Yes, distance() does what I wanted, but it is VERY slow!
It seems each time it walks all items from the beginning to the
item in question, ie. it practically does a find().
That's unfortunately too inefficient for my needs.
Isn't there a better (a direct) method without traversing the set ?
I think you're asking the wrong question. What do you plan to do with
this "sequence number", and are there other ways to do the same thing?
--
Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
Standard C++ Library Extensions: a Tutorial and Reference
(www.petebecker.com/tr1book)