Преобразовать два вектора в вектор кортежей, используя stl и boost
Я имею
vector<time> tt;
vector<space> xx;
я хотел бы получить
vector<tuple<time,space>> trajectory;
это то, что я до сих пор
std::for_each(boost::make_zip_iterator(
boost::make_tuple(tt.begin(),xx.begin(),
boost::make_tuple(tt.end(),xx.end(),
[]() {
trajectory.push_back(make_tuple(get<0>(),get<1>()));
}
);
Я не уверен, что делать дальше. Одним из способов является то, что я могу сделать функтор в виде zip_func в http://www.boost.org/doc/libs/1_52_0/libs/iterator/doc/zip_iterator.html но я не хочу писать дополнительный код, и я хочу использовать лямбду. Какие-нибудь мысли?
1 ответ
Как насчет чего-то вроде (непроверенный код):
std::copy(
boost::make_zip_iterator(boost::make_tuple(tt.begin(),xx.begin()),
boost::make_zip_iterator(boost::make_tuple(tt.end (),xx.end ()),
std::back_inserter(trajectory)
);
Не нужно лямбда! В вашем примере кода вы распаковываете кортеж только для создания другого кортежа, поэтому я смог от него избавиться.