bool container_equal(const Container1& con1, const Container2& con2){ auto first1 = con1.cbegin(), last1 = con1.cend(); auto first2 = con2.cbegin(), last2 = con2.cend(); for (; first1 != last1 && first2 != last2; ++first1, ++first2){ if (*first1 != *first2) return false; } return (first1 == last1 && first2 == last2); }
std::vector<double> midpt(const Container1<T>& k, class Container2<coord_type>::iterator coord_iter1, double h) { std::vector<double> midpoints( k.size() ); std::transform(k.cbegin(), k.cend(), coord_iter1, midpoints.begin(), [&](const T& ki, const coord_type& xi) { return 0.5*h*ki + xi; } ); return midpoints; }