我有一个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>?
是的,只需将两者结合起来,data而不是begin。
api(bytes.data() + offset, size);
Run Code Online (Sandbox Code Playgroud)
使用下标和地址运算符也有效
api(&bytes[offset], size);
Run Code Online (Sandbox Code Playgroud)