
Suppose I have a map (m) and a sorted vector of strings (v). The map's key is a string, and the map's value is foobar. I wish to compare map's keys with the vector's values and detect if they all match: (*mit).first == *vit and wish to do it with STL/Boost algo and functors. So I am starting with this: equal(m.begin(), m.end(), v.begin(), boost::bind(std::equa_to<string>(), std::select1st<std::pair<string,foobar> >(_1), _2)); I know 2 parameters are past to bind: *mit and *vit . However, before the equality, I want to extract the key from the map iterator (i.e. (*mit).first) before the comparison. That is this part I have difficulty to concretise. Btw, is there any equivalent to select1st (SGI extension) in Boost? Does anyone have any idea? I must be close to the solution...