Необходимо преобразовать std :: vector <ButtonElement>buttonList в std :: vector <BYTE>byteVector - PullRequest
0 голосов
/ 07 февраля 2020

Мне нужно преобразовать std :: vector buttonList в std :: vector byteVector. Я сделал это, используя этот memcpy (& byteVector, & buttonList, buttonList.size () * sizeof (TenderButtonList_Element));

Но один из моих старших упомянул, что это неправильное использование STL, но не сказал точно, что это. Я подозреваю, что memcpy не должен использоваться на векторах. Является ли приведенное выше преобразование действительным, я заметил, что оно служило своей цели, но хотел знать, действительно ли оно или нет. Если это не так, вы можете указать правильный путь.

1 Ответ

3 голосов
/ 07 февраля 2020

Если это не так, можете ли вы указать правильный путь.

Это зависит от того, чего вы пытаетесь достичь sh.

У вас есть последовательность (a vector) TenderButtonList_Element, верно?

Вы хотите создать последовательность байтов, содержащую тот же битовый шаблон, что и первая последовательность? Это правильно?

Если это то, что вам нужно, то вы хотите что-то вроде этого:

vector<std::byte> vBytes;
vBytes.resize(buttonList.size() * sizeof(TenderButtonList_Element));
memcpy(vBytes.data(), buttonList.data(), vBytes.size());

Если вы хотите что-то еще, то вам нужно будет сказать, что это is.

Обратите внимание, что, как правило, memcpy -ing-объекты c ++ вокруг не создают допустимых объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...