Как насчет использования for_each с boost?
#include<iostream>
#include <algorithm>
#include <set>
#include <boost/iterator/zip_iterator.hpp>
int main(){
std::set<uint32_t> first = {1,2,3};
std::set<uint32_t> second = {4,5,6};
std::for_each(
boost::make_zip_iterator(boost::make_tuple(first.begin(), second.begin())),
boost::make_zip_iterator(boost::make_tuple(first.end(),second.end())),
[](const boost::tuple<uint32_t,uint32_t>& t) {
std::cout << t.get<0>() << " : " << t.get<1>() << std::endl;
});
return 0;
}
Не уверен, что он подойдет для ваших нужд, но в некоторых случаях довольно полезно