c ++ 11 — Инициализировать C ++ array2, используя константу array1, известную во время компиляции

У меня есть следующий массив:

int const A[4] = { 0, 1, 2, 3 };

Я хочу инициализировать дублированный массив следующим образом:

int a[4] = A;

Если я запускаю g ++ 4.8.2 на Cygwin следующим образом:

g++ --std=c++11 myfile.cpp

Я получаю следующую ошибку:

myfile.cpp:16:16: error: array must be initialized with a brace-enclosed initializer
int a[4] = A;
^

Однако, видимо,int a[4] = { A };«тоже не сработает. Есть ли способ инициализировать мой массив a от A используя простую инструкцию присваивания, не прибегая к:

int a[4] = { A[0], A[1], A[2], A[3] };

?

3

Решение

Используйте вместо стандартного класса std::array,

#include <array>

//...

const std::array<int, 4> A = { 0, 1, 2, 3 };
std::array<int, 4 > a = A;
6

Другие решения

std::copy(A, A+4, a)

или, используя std :: array, есть простой метод копирования, который вы хотите:

std::array<int, 4>A = {0, 1, 2, 3}
std::array<int, 4>a = A;
7

По вопросам рекламы [email protected]