/* OctaSTD extensions for std::vector. * * This file is part of OctaSTD. See COPYING.md for futher information. */ #ifndef OSTD_VECTOR_HH #define OSTD_VECTOR_HH #include #include "ostd/range.hh" namespace ostd { template inline PointerRange iter(std::vector &v) { return PointerRange{v.data(), v.size()}; } template inline PointerRange iter(std::vector const &v) { return PointerRange{v.data(), v.size()}; } template inline PointerRange citer(std::vector const &v) { return PointerRange{v.data(), v.size()}; } template inline std::vector make_vector(R range) { /* TODO: specialize for contiguous ranges and matching value types */ std::vector ret; for (; !range.empty(); range.pop_front()) { ret.push_back(range.front()); } return ret; } template inline std::vector> make_vector(R range) { return make_vector>(std::move(range)); } } /* namespace ostd */ #endif