Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 696
tuket Avatar asked Sep 01 '20 10:09

tuket


2 Answers

v.assign(_v.begin(), _v.end());
like image 112
yuri kilochek Avatar answered Oct 13 '22 18:10

yuri kilochek


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)

like image 31
JeJo Avatar answered Oct 13 '22 19:10

JeJo