我有一个std::vector<double>
,需要使用一个需要const vector<uint8_t>
的库。我用枚举指定库的数据类型。
我是否可以完全避免复制数据,并让字节向量在内部引用与双向量相同的数据?由于字节向量是const,并且双向量在字节向量的生存期内不会更改,因此看起来非常安全。有很多数据,所以复制它真的不是一个选择。
如果你的"字节向量"实际上是一个字节向量,那么你就有机会了,因为你可以合法地将任何东西作为char
数组进行检查。然而,uint32_t
s不是字节,当然也不是char
s。所以,不,如果没有可怕的黑客魔法,你基本上无法做到这一点,因为它的安全性将完全取决于实现。
无论哪种方式,都不能使用向量类型:必须强制转换并传递std::vector::data()
的结果,即指针。
很抱歉,我不得不建议你重新审视一下你的设计。如果你使用的库真的采用了一个整数向量,而这个向量实际上应该是一个二重向量,那么它的开发人员会让你陷入尴尬的境地。