将 std::span 分配给 std::vector 的最简单方法

问题描述 投票:0回答:3

我想做这个

#include <vector>
#include <span>

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

但是它无法编译。有哪些替代方案?

c++ stdvector c++20 std std-span
3个回答
19
投票
v.assign(_v.begin(), _v.end());

3
投票

您还可以使用

std::vector::insert
,如下所示:

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

注意,如果

v
之前要清空,则应在此之前调用
v.clear()
。但是,这允许您将跨度添加到
v
中的指定位置。

查看演示


0
投票

使用

std::vector<T,Allocator>::assign_range
(C++23)。

v.assign_range(_v); // or “v.assign(_v.begin(), _v.end());”
© www.soinside.com 2019 - 2024. All rights reserved.