
On 12/04/12 10:36, Robert Jones wrote:
On Wed, Apr 11, 2012 at 11:33 PM, Robert Dailey<rcdailey.lists@gmail.com>wrote:
Is there a method in the boost library to iterate a vector of boost::tuple objects, comparing the 1st element in the tuple of each tuple to a value that I specify? My tuple is setup like so:
typedef boost::tuple<int, int, char const*> Tuple; typedef std::vector<Tuple> ErrorStringMap;
ErrorStringMap mystrings = tuple_list_of (10, "10", "ten") (20, "20", "twenty") (30, "30", "thirty") (10, "10", "ten");
I want to search the vector of tuples and do something with every tuple that has the number 10 as the first element in the tuple.
*** Not Tested or Compiled ***
#include<boost/range.hpp> #include<boost/range/adaptors/filtered.hpp> // ... and maybe some other range headers #include<boost/bind.hpp>
for_each( mystrings | boost::adaptors::filtered( boost::bind( get<0>, _1 ) == 10 ), yourAction );
You probably can't take the address of get<0>. Also, you could remove the dependence on filtered by using find_if instead of for_each.