|
Boost : |
From: Dean Michael Berris (mikhailberis_at_[hidden])
Date: 2007-11-20 02:43:46
Hi Everyone,
I'm CC'ing Mark Rogers who, upon looking at the Author of
Boost.Functional (and I assume is the maintainer) may be able to help
out with this regard.
Recently, I've implemented a simple utility which allows users to
select the nth element of an STL pair / Boost.Tuple in conjunction
with STL algorithms. This allows precisely the following usage
semantics:
std::map<int, int> int_map;
int_map[0] = 1;
int_map[1] = 2;
std::transform(int_map.begin(), int_map.end(),
std::ostream_iterator<int>(std::cout, " "),
boost::select<1>()); // output: "1 2 "
This is a generalization of the SGI select1st and select2nd function objects.
It also works with a container of Boost.Tuple's:
std::list<boost::tuple<double, double, double> > coord_list;
coord_list.push_back(boost::make_tuple(1.0, 2.0, 3.0));
coord_list.push_back(boost::make_tuple(4.0, 5.0, 6.0));
std::transform(coord_list.begin(), coord_list.end(),
std::ostream_iterator<double>(std::cout, " "),
boost::select<0>()); // output "1.0 4.0 "
I've re-attached the implementation, for comments and review for
inclusion in Boost.Functional.
Thanks very much, and I hope to hear from you guys soon.
-- Dean Michael C. Berris Software Engineer, Friendster, Inc. [http://cplusplus-soup.blogspot.com/] [mikhailberis_at_[hidden]] [+63 928 7291459] [+1 408 4049523]
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk