Вопрос по c++, initialization, c++14, arrays, syntax – В C ++ возможно ли инициализировать массив непосредственно из другого?

2

В C ++ возможно ли инициализировать встроенный массив напрямую из другого? Насколько я знаю, можно иметь только массив, а затем копировать / перемещать в него каждый элемент из другого массива, что является своего рода присваиванием, а не инициализацией.

Вы беспокоитесь о встроенных массивах а-ляint n[5]и / илиstd::array<>s? Tony Delroy
@TonyD Я имею в виду встроенный массив. Lingxi
Ты читалstackoverflow.com/questions/20519992/... ? VolAnd
Не могли бы вы сделать ваш вопрос более четким? Добавить псевдо, например Trevor
@Lingxistd::array был представлен C ++ 11 как удобная оболочка поверх встроенных массивов; он предоставляет как конструктор копирования, так и оператор копирования, поэтому вам не нужно делать это вручную legends2k

Ваш Ответ

2   ответа
4

Это одна из новых функцийстанд :: массив вC++ 11.

std::array <int, 5> a = {1, 2, 3, 4, 5};
std::array <int ,5> b = a;

Последний копирует массивa вb.

2

ни оператора назначения копирования. Вы можете копировать элементы только из одного массива в другой элемент за элементом.

Символьные массивы могут быть инициализированы строковыми литералами. Или строки могут быть скопированы с использованием стандартных функций C, таких какstrcpy, strncpy, memcpy объявлено в заголовке<cstring>.

Для других массивов вы можете использовать, например, стандартные алгоритмыstd::copy, std::copy_if, std::transform объявлено в заголовке<algorithm>.

В противном случае вы можете использовать любой стандартный контейнерstd::array или жеstd::vector которые позволяют назначить один объект типа другому объекту того же типа или создать один объект из другого объекта.

Итак, ответ в основном нет? Lingxi
@Lingxi Для встроенных массивов ответ отрицательный. Единственный подход заключается в том, чтобы заключить массив в структуру (таким образом разработан std :: array) и создать объект структуры из другого объекта того же типа, который уже содержит некоторый массив, который должен быть скопирован. Vlad from Moscow

Похожие вопросы