Re: Why doesn't push_back return an iterator?
In article <jumfgi$iek$1@news.cc.tut.fi>, Kaba <kaba@nowhere.com>
wrote:
24.7.2012 7:52, Nevin ":-]" Liber wrote:
In article <juj3d8$hnt$1@usenet.stanford.edu>,
Seungbeom Kim <musiphil@bawi.org> wrote:
I agree that push_back(), etc. returning the iterator would be useful
What is the use case for this?
In general, you wish to create new data structures based on existing
data structures. To refer to a part in a data structure you need
iterators. This is essential in being able to obtain efficient data
structures.
In the new data structure you use existing data structures to refer to
each other in useful ways. Therefore, when you create a part, you are
not just creating it to be stored and later be traversed as part of a
sequence (say). Rather, you are creating it to be referred to _directly_
(giving you strict constant-time access and direct identification for,
say, removal).
Except for list (which is node based), this gets dangerous, as iterators
can be invalidated at the drop of a hat.
For that reason, I wouldn't want to see it in the general container
interface; it just isn't that hard to use insert/emplace when you need
this functionality. For the sake of consistency, I also wouldn't want
to see it in push_back/emplace_back for list.
As for push_front/emplace_front, begin() gets you that same iterator.
--
Nevin ":-)" Liber <mailto:nevin@eviloverlord.com>
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]