C++ 调整大小时没有重载函数的实例

C++ 调整大小时没有重载函数的实例,c++,syntax,dft,C++,Syntax,Dft,当我使用resize()时,出现了一个错误“没有重载函数的实例”。我知道resize()的内部可能也有问题。我正在尝试调整x的大小,一个浮点数数组的大小为0。不确定STD::vector >(0, 0)是否是正确的语法,因为我对C++非常陌生。如何解决现有错误 void IDFT(const std::vector<std::complex<float>> &Xf, std::vector<float> &x) { // allocat

当我使用resize()时,出现了一个错误“没有重载函数的实例”。我知道resize()的内部可能也有问题。我正在尝试调整x的大小,一个浮点数数组的大小为0。不确定STD::vector >(0, 0)是否是正确的语法,因为我对C++非常陌生。如何解决现有错误

void IDFT(const std::vector<std::complex<float>> &Xf, std::vector<float> &x)
{
    // allocate space for the vector holding the frequency bins
    // initialize all the values in the frequency vector to complex 0
    x.resize(Xf.size(), static_cast<std::vector<float>>(0, 0));
    // Xf.resize(x.size(), static_cast<std::complex<float>>(0, 0));
    // "auto" keyword is used for type deduction (or inference) in C++
    for (auto k = 0; k < Xf.size(); k++)
    {
        for (auto m = 0; m < x.size(); m++)
        {
            std::complex<float> expval(0, 2 * PI * (k * m) / x.size());
            x[k] += x[k] * std::exp(expval);
        }
    }
}
void IDFT(const std::vector&Xf,std::vector&x)
{
//为包含频率单元的向量分配空间
//将频率向量中的所有值初始化为复数0
x、 调整大小(Xf.size(),静态_转换(0,0));
//Xf.resize(x.size(),static_cast(0,0));
/“自动”关键字用于C++中的类型推导(或推理)
对于(自动k=0;k
这是:

x.resize(Xf.size(), static_cast<std::vector<float>>(0, 0));
这是:

x[k] += x[k] * std::exp(expval);
应该是:

x[k] += a_function_that_converts_a_complex_float_to_a_float(x[k] * std::exp(expval));

将复杂浮点运算转换为浮点运算的
a_函数的实现留作练习。您可以使用
complex
的成员函数
real()
imag()

请将代码作为文本而不是图像发布
x
是浮点向量,因此
resize
的第二个参数应该是浮点,而不是向量。但是对于代码的其余部分,它看起来像是
x
应该是
std::complex
的向量。如果您查看,您将看到
resize
的第二个参数应该是(或者可以隐式转换为)与本例中的每个
vector
元素的类型相同--
float
。阅读代码中的注释,我想知道调整大小的目的是什么。是否确实要将
Xf
的大小调整为
x
?这将是毫无意义的,因为
x
刚刚调整为
Xf
的大小。
x[k] += a_function_that_converts_a_complex_float_to_a_float(x[k] * std::exp(expval));