从 vector<uint8_t> 中提取 uint8_t* 子集

S-K*_*-K' 1 c++ c++17

我有一个vector<uint8_t>,并且我正在与一个需要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());
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下运行良好,但在受限设备上内存不足。有没有更有效的方法从 a 中提取 uint8_t* 子集vector<uint8_t>

joh*_*ohn 5

是的,只需将两者结合起来,data而不是begin

api(bytes.data() + offset, size);
Run Code Online (Sandbox Code Playgroud)

使用下标和地址运算符也有效

api(&bytes[offset], size);
Run Code Online (Sandbox Code Playgroud)