Самый простой способ назначить std::span на std::vector

Я хотел сделать это

#include <vector>
#include <span>

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

Но не компилируется. Какие есть альтернативы?

2 ответа

Решение
v.assign(_v.begin(), _v.end());

Вы также можете использовать std::vector::insert следующее:

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

Обратите внимание, что если v должен быть опорожнен раньше, вы должны позвонить v.clear()перед этим. Однако это позволяет вам добавить диапазон в указанное место вv.

(См. Демонстрацию)

Другие вопросы по тегам