Извлечь подмножество uint8_t * из вектора - PullRequest
1 голос
/ 07 мая 2020

У меня есть vector<uint8_t>, и я взаимодействую с api, который ожидает uint8_t* data, size_t size. Мне нужно предоставить api подмножество моего вектора, в моем текущем решении я создаю подмножество с помощью конструктора вектора, а затем передаю data () этого нового вектора в api:

vector<uint8_t> subset(bytes.begin() + offset, bytes.begin() + offset + size);
api(subset.data(), subset.size());

В большинстве случаев это работает нормально, но на устройствах с ограничениями не хватает памяти. Есть ли более эффективный способ извлечь подмножество uint8_t * из vector<uint8_t>?

Ответы [ 2 ]

5 голосов
/ 07 мая 2020

Да, просто объедините два, но с data вместо begin.

api(bytes.data() + offset, size);

Использование подстрочного индекса и операторов адреса также работает

api(&bytes[offset], size);
0 голосов
/ 07 мая 2020

Думаю, вам не нужно создавать подмножество, передавать первый элемент вектора и размер, который нужно извлечь из него. Убедитесь, что этот размер меньше байтов. Size ()

api(&bytes[0],size);
...