Я получаю массив из C API, и я хотел бы скопировать его в std :: array для дальнейшего использования в моем коде на C++. Итак, каков правильный способ сделать это?Правильный способ инициализации std :: array из массива C
I 2 использует для этого один:
struct Foo f; //struct from C api that has a uint8_t kasme[32] (and other things)
c_api_function(&f);
std::array<uint8_t, 32> a;
memcpy((void*)a.data(), f.kasme, a.size());
И это
class MyClass {
std::array<uint8_t, 32> kasme;
int type;
public:
MyClass(int type_, uint8_t *kasme_) : type(type_)
{
memcpy((void*)kasme.data(), kasme_, kasme.size());
}
...
}
...
MyClass k(kAlg1Type, f.kasme);
Но это чувствует себя довольно неуклюжим. Есть ли идиоматический способ сделать это, что, по-видимому, не связано с memcpy? Для MyClass, возможно, мне лучше с конструктор, принимающий std :: массив, который перемещается в член, но я тоже не могу понять, как это сделать. ?
Почему не 'зЬй :: copy'? – 101010
за исключением того, что он еще не является официальным: 'auto x = std :: to_array (cArrayPtr);' –
David