Simplest way to assign std::span to std::vector

Viewed 1866

I wanted to do this

#include <vector>
#include <span>

struct S
{
    std::vector<int> v;
    void set(std::span<int> _v)
    {
        v = _v;
    }
};

But it does not compile. What are the alternatives?

2 Answers
v.assign(_v.begin(), _v.end());

You can also use the std::vector::insert as follows:

v.insert(v.begin(), _v.begin(), _v.end());

Note that, if the v should be emptied before, you should call v.clear() before this. However, this allows you to add the span to a specified location in the v.

(See a demo)

Related