|
Boost : |
From: Rob Stewart (stewart_at_[hidden])
Date: 2004-10-04 11:26:13
From: "Gennadiy Rozental" <gennadiy.rozental_at_[hidden]>
> [From: Rob Stewart]
> > I think you misunderstood what Gennadiy meant. (If not, I think
> > this is a good idea, anyway.) Your function should accept an
> > output iterator through which you save the results. That enables
> > the caller to decide where the results go instead of you deciding
> > that they go into a list which then must be iterated. Thus, I'm
> > proposing something like this:
> >
> > template <typename OutIt, typename Char>
> > OutIt
> > glob(OutIt & out, std::basic_string<Char> const & pattern,
> > filesystem::path const & pathname, glob_flags flags);
>
> I don't think I ever suggested this. Plain iterator is what I meant. How
Sorry, I misunderstood you, then.
> would I iterate using above interface?
You wouldn't, of course. You'd use it to write to something
else, including std::cout.
> > Appropriate output iterators can forward the matches to a
> > collection, to a GUI control, to a file, etc.
> >
> > > It works, but is considerably slower than the function returning a list.
> No
> > > doubt profiling will help track down what I'm doing inefficiently.
> >
> > No doubt.
>
> I do not see anything in iterator implementation that suggest inherent
> inefficiency.
What he described sounded like he populated a container with the
results and then iterated that. Using the resulting iterator to
populate another container would, thus, reduce efficiency.
-- Rob Stewart stewart_at_[hidden] Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer;
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk