#include #include #include #include #include #include #include template std::ostream & operator<<(std::ostream & out, const boost::optional& opt) { if (opt) { out << "Just " << *opt; } else { out << "Nothing"; } return out; } int main() { { std::vector vec1{1,2,3,4,5,6}; std::vector vec2{1,2,3,4,5}; std::vector strvec = {"his","name","was","robert","paulson","his", "name","was","robert","paulson"}; for (auto&& t : iter::zip_longest(iter::chain(vec1,vec2),strvec)) { std::cout << std::get<0>(t) << " " << std::get<1>(t) << std::endl; } } std::string str = "hello world"; std::vector vec = {6, 9, 6, 9}; for (auto&& p : iter::enumerate(iter::enumerate(str))) { (void)p; } for (auto&& p : iter::enumerate(iter::zip(str, vec))) { (void)p; } std::cout << std::endl; { std::vector vec1{1,2,3,4,5,6}; std::vector vec2{7,8,9,10}; std::vector strvec {"We're","done","when","I","say","we're","done"}; for (auto&& t : iter::zip(strvec, iter::chain(iter::slice(vec1,2,6), iter::slice(vec2,1,4)))) { std::cout << std::get<0>(t) << " " << std::get<1>(t) << std::endl; } } std::cout << std::endl; { std::vector vec1{1,2,3,4,5,6}; std::vector vec2{7,8,9,10}; for (auto&& s : iter::sliding_window(iter::chain(vec1,vec2),4)) { for (auto&& i : s) std::cout << i << " "; std::cout< const& c) {return std::get<0>(c) >= std::get<1>(c);}, prod_range)) { std::cout << std::get<0>(ij) << "," << std::get<1>(ij) << std::endl; } }