我在缓冲区中收到一个复数值(16位整数)数组。在过去,我处理过这样的情况:
typedef struct {
int16_t re;
int16_t im;
} complex_16_t;
uint8_t * buffer;
// after receiving data into buffer pointer
foo((complex_16_t *) data, length);
我现在必须使用std::complex
数据类型作为我的函数foo
的输入而不是我自己的结构。我可以使用std::complex
来创建第二个缓冲区并复制数据吗?
答案 0 :(得分:1)
不便携。 std::complex
仅针对浮点类型指定,而不是int16_t
。
如果您的库确实支持该特殊化作为非标准扩展,那么希望它也将提供与支持的类型相同的保证:将基础类型的数组重新解释为一半复杂类型的数组工作如你所愿。如果是这种情况,那么您的代码应与complex<int16_t>
一起使用,现在与您的类型一起使用。