2017-08-25 58 views
1

我需要訪問C++中複雜數據矢量的特定元素。使用複雜矢量的錯誤

以下是我有:

vector< complex<float> > x; // Create vector of complex numbers 
x.push_back(complex<float>(1, 2)); // Place 1 + j2 in vector 
x.push_back(complex<float>(2, 1)); // Place 2 + j1 in vector 

// Attempt at accessing the zero-th elements real part 
float temp1 = x.at(0).real; 
float temp2 = x[0].real; 

這給在Visual Studio 2015年以下錯誤:

嚴重性代碼說明項目文件的線路抑制狀態 錯誤C3867「的std :: _ Complex_base: :真實':非標準語法;使用 '&' 創建一個指向成員opencv_dft C:\用戶\喬希\ VS_project \ main.cpp中101

+0

使用'x [0] .real()'或甚至更好'使用std :: real; ... real(x [0])'。 – alfC

回答

2

您在調用real()忘記括號。您需要:

float temp1 = x.at(0).real(); 
float temp2 = x[0].real(); 

real()是一個成員函數,而不是數據成員。

+0

哇,你是對的! – user8919

0

無需在聲明x.push_back(complex(float){1,2})中進行投射 - 雖然不會傷害投射。另外不要忘記使用命名空間標準來使用矢量和複雜的語句。

另外不要忘記()s在x.at(0).real所以它是x.at(0).real();.

這是我如何使用向量和複數編寫程序。

#include <iostream> 
#include <complex> 
#include <vector> 

    using namespace std; 

    void main() { 
     complex<float> a = { 1,2 }; 
     a = { 1,4 }; 
     vector<complex<float>> av; 
     av.push_back({ 1,2 }); 
     cout << av.at(0).real(); 
    } 
+0

非常好。非常感謝你。 – user8919