将 std::vector 移动到 std::array

Rei*_*ani 0 c++

std::vectorstd::array存储在存储器的连续块他们的数据。假设我有

class T;    // A movable class
T t;
std::vector<T>  vec;
vec.push_back(t);

std::array<T,1> arr;
Run Code Online (Sandbox Code Playgroud)

假设如上所述,我保证知道vec并且arr具有相同的长度。有没有一种方法可以让我移动 vecarray而不是用 复制它std::copy(vec.begin(), vec.end(), arr.begin())

eer*_*ika 11

您不能移动矢量。但是您可以移动向量的每个元素:

std::move(vec.begin(), vec.end(), arr.begin());
Run Code Online (Sandbox Code Playgroud)