Re: I'd like to use STL algorithms
Vladimir Marko wrote:
kanze wrote:
Vladimir Marko wrote:
You need the boost::counting_iterator and the second overload
of transform:
std::transform(
tokens.begin(),tokens.end(), // first1, last1
boost::counting_iterator<std::size_t>(0u), // first2
tokens.begin(), // result
boost::bind(convert,_2,_1) // binary_op
//< in which namespace are _1 and _2? Never mind.
);
See http://www.boost.org/libs/iterator/doc/counting_iterator.html .
Clever but... doesn't this sort of hide the fact that the
transformation done to each element is a function of the
numeric value of its index in the array? And as such, count as
obfuscation?
Doesn't "counting_iterator" say that I'm actually counting something?
This doesn't seem obfuscated to me. Then again, there are many things
that seem pretty obvious to me and hard to understand to others or
vice versa.
Well, it certainly depends on the point of view. If the idea is
a function dependant on the index, I find it a lot clearer to
use the index. If the idea is a function depending on how many
times it has been invoked, then the counting_iterator is
clearer. My point is just that your solution obscures the
relationship between the function and the index; the
counting_iterator duplicates the behavior of the iterator into
the container, in order to recreate the index behind it, but the
relationship is indirect enough to not be immediately clear.
--
James Kanze GABI Software
Conseils en informatique orient?e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S?mard, 78210 St.-Cyr-l'?cole, France, +33 (0)1 30 23 00 34
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]