Вот другой (более подробный) способ:
uint16_t myarray[] = { 0, 1, 2, 3, 4, 5, 6, ..., n };
constexpr auto arr_size = sizeof(myarray) / sizeof(myarray[0]);
constexpr auto copy_start = std::min< size_t >(3, arr_size);
constexpr auto copy_count = 19;
constexpr auto copy_end = std::min< size_t >(copy_start + copy_count, arr_size);
vector< uint16_t > myvect(std::next(myarray, copy_start), std::next(myarray, copy_end));
Вместо UINT16
вы можете использовать uint16_t
тип от C ++ 11 и выше: Фиксированные целые числа ширины (если ваш компилятор поддерживает это)
Если ваши значения доступны во время компиляции, то вы можете использовать константы времени компиляции (constexpr
) для вычисления вспомогательных переменных. В противном случае следует использовать const
.
Стандартные алгоритмы можно использовать и для массивов, поэтому смещение std::next
можно использовать для получения n-го элемента массива.