diff --git a/include/libcamera/internal/vector.h b/include/libcamera/internal/vector.h index a67a09474..4e9ef1ee6 100644 --- a/include/libcamera/internal/vector.h +++ b/include/libcamera/internal/vector.h @@ -42,8 +42,12 @@ public: constexpr Vector(const std::array &data) { - for (unsigned int i = 0; i < Rows; i++) - data_[i] = data[i]; + std::copy(data.begin(), data.end(), data_.begin()); + } + + constexpr Vector(const Span data) + { + std::copy(data.begin(), data.end(), data_.begin()); } const T &operator[](size_t i) const diff --git a/src/libcamera/vector.cpp b/src/libcamera/vector.cpp index 85ca22082..5567d5b8d 100644 --- a/src/libcamera/vector.cpp +++ b/src/libcamera/vector.cpp @@ -44,6 +44,14 @@ LOG_DEFINE_CATEGORY(Vector) * The size of \a data must be equal to the dimension size Rows of the vector. */ +/** + * \fn Vector::Vector(const Span data) + * \brief Construct vector from supplied data + * \param data Data from which to construct a vector + * + * The size of \a data must be equal to the dimension size Rows of the vector. + */ + /** * \fn T Vector::operator[](size_t i) const * \brief Index to an element in the vector