diff --git a/src/utils.hpp b/src/utils.hpp index 92e5f39..571d328 100644 --- a/src/utils.hpp +++ b/src/utils.hpp @@ -1,26 +1,31 @@ #pragma once +#include #include #include -#include +#include #include #include +#include namespace fmri { + template + inline T identity(T t) { + return t; + } + template inline std::vector read_vector(const std::string& filename) { std::ifstream input(filename); assert(input.good()); - T t; std::vector res; - - while (input >> t) { - res.push_back(t); - } + std::transform(std::istream_iterator(input), + std::istream_iterator(), + identity, std::back_inserter(res)); return res; } @@ -44,12 +49,10 @@ namespace fmri template std::vector> combine(const std::vector& a, const std::vector& b) { - assert(a.size() == b.size()); std::vector> res; - - for (size_t i = 0; i < a.size(); ++i) { - res.emplace_back(a[i], b[i]); - } + std::transform(a.begin(), a.end(), b.begin(), + std::back_inserter(res), + [] (const T& a, const U& b) -> auto { return std::make_pair(a, b); }); return res; }