#include <iostream>
#include <vector>
#include <boost/iterator/zip_iterator.hpp>
typedef boost::tuple<int&, float&> EntryTuple;
struct zip_func :
public std::unary_function<const EntryTuple&, void>
{
void operator()(const EntryTuple& t) const
{
t.get<0>() = 10;
std::cout << t.get<0>() << " " << t.get<1>() << std::endl;
}
};
int main()
{
const int N = 5;
std::vector<int> intVec(N,2);
std::vector<float> valueVec(N,5.5);
std::for_each(
boost::make_zip_iterator(
boost::make_tuple(intVec.begin(), valueVec.begin())
),
boost::make_zip_iterator(
boost::make_tuple(intVec.end(), valueVec.end())
),
zip_func()
);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKI2luY2x1ZGUgPGJvb3N0L2l0ZXJhdG9yL3ppcF9pdGVyYXRvci5ocHA+CgoKdHlwZWRlZiBib29zdDo6dHVwbGU8aW50JiwgZmxvYXQmPiBFbnRyeVR1cGxlOwoKc3RydWN0IHppcF9mdW5jIDoKICBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxjb25zdCBFbnRyeVR1cGxlJiwgdm9pZD4KewogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBFbnRyeVR1cGxlJiB0KSBjb25zdAogIHsKICAgIHQuZ2V0PDA+KCkgPSAxMDsKICAgIHN0ZDo6Y291dCA8PCB0LmdldDwwPigpIDw8ICIgIiA8PCAgdC5nZXQ8MT4oKSA8PCBzdGQ6OmVuZGw7CiAgfQp9OwoKCmludCBtYWluKCkKewogIApjb25zdCBpbnQgTiA9IDU7CnN0ZDo6dmVjdG9yPGludD4gaW50VmVjKE4sMik7CnN0ZDo6dmVjdG9yPGZsb2F0PiB2YWx1ZVZlYyhOLDUuNSk7CgpzdGQ6OmZvcl9lYWNoKApib29zdDo6bWFrZV96aXBfaXRlcmF0b3IoCiAgYm9vc3Q6Om1ha2VfdHVwbGUoaW50VmVjLmJlZ2luKCksIHZhbHVlVmVjLmJlZ2luKCkpCiAgKSwKYm9vc3Q6Om1ha2VfemlwX2l0ZXJhdG9yKAogIGJvb3N0OjptYWtlX3R1cGxlKGludFZlYy5lbmQoKSwgdmFsdWVWZWMuZW5kKCkpCiAgKSwKemlwX2Z1bmMoKQopOwoKcmV0dXJuIDA7Cn0=