c++ - 有没有一种优雅的方法可以将 vector<complex<float>> 转换为 vector<short>?

标签 c++ c++11 vector

我的类(class)正在接收一个复数浮点 vector ,但数据流数据包必须包含尽可能短的数据。我的解决办法是先把数据转成short,然后batch成包,发过去。转换此数据的最佳方法是什么?

复杂数据应映射到两个单独的变量:例如,vcfSampleData[0].real() -> m_pData[0]vcfSampleData [0].imag() -> m_pData[1] 等等。

void BufferSampleData(const std::vector<std::complex<float>>& vcfSampleData, const float& fTotalGain_dB, const Frequency& CentreFrequency, const Bandwidth& cBandwidth, const TimeStamp& tCaptureTime, const SampleRate& SampleRate)
{
    sBufferData* pWriteElement = m_SampleBuffer.GetWriteElement();
    if(pWriteElement != nullptr) {
        std::copy(vcfSampleData.begin(), vcfSampleData.end(), pWriteElement->m_pData); //vector<comlex<float>> must become vector<complex<short>> or vector<short>
        //other irrelevant stuff here
        m_SampleBuffer.CommitWriteElement();
    }
}

最佳答案

没有 std:: 函数可以满足您的要求,您只需编写一个循环

pWriteElement->m_pData.reserve(vcfSampleData.size() * 2);
pWriteElement->m_pData.clear();
for (auto cmpl : vcfSampleData)
{
    pWriteElement->m_pData.push_back(cmpl.real());
    pWriteElement->m_pData.push_back(cmpl.imag());
}

关于c++ - 有没有一种优雅的方法可以将 vector<complex<float>> 转换为 vector<short>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43657872/

相关文章:

c++ - 通过引用返回局部变量

C++ 二维 vector SIGSEGV 错误

c++ - 如何为静态常量模板化专用整数值分配存储

c++ - 使用模板和/或 constexpr 在编译时构建函数

c++ - C++ 中对模板的 const 引用范围

c++ - 如何在 C++ 中从 .cr2 读取图像数据?

c++ - 如何在数组和 vector 中存储和保持输入 C++

c++ - 如何保证一个函数在一个线程内不返回就不会再次进入?

C++ 排除非整数用户输入

c++ - 将变量数据发送到其他类时出现问题