Назначить массив C массиву std :: array на C ++? (std :: array = T ) – не существует подходящего конструктора из «T » в «std :: array “

Я пытаюсь назначить массив C массиву std :: C ++.

Как мне это сделать, самый чистый способ и без создания ненужных копий и т. Д.?

Когда вы делаете

int X[8]; std::array Y = X; 

Я получаю ошибку компилятора: «нет подходящего конструктора».

Нет никакого преобразования из простого массива в std::array , но вы можете скопировать элементы из одного в другое:

 std::copy(std::begin(X), std::end(X), std::begin(Y)); 

Вот рабочий пример:

 #include  #include  #include  // std::copy int main() { int X[8] = {0,1,2,3,4,5,6,7}; std::array Y; std::copy(std::begin(X), std::end(X), std::begin(Y)); for (int i: Y) std::cout << i << " "; std::cout << '\n'; return 0; }