2013-08-03 9 views
14

Voglio usare C++ con numeri complessi. Pertanto ho incluso #include <complex>. Ora la mia domanda è: come faccio a dichiarare una variabile (così che cosa è il formato richiesto diciamo:? 1 + i)?Numeri complessi C++, qual è il formato giusto?

Grazie in anticipo :-)

+0

Cosa hai incluso? – Bichoy

+0

Mi dispiace cosa includeva? – DaMachk

+0

* Pertanto, ho incluso '# include' * Che cosa significa? – Manu343726

risposta

12
// 1 + 2i 
std::complex<double> c(1, 2); 
5

si definisce una variabile specificando un parametro di modello e specificare un nome per la variabile, in giro come con la maggior parte altri modelli:

std::complex<double> x(1, 1); 

il primo parametro al ctor è la parte vera, la seconda la parte immaginaria.

iniziano per C++ 14, è stato aggiunto un operatore di letterale definito dall'utente, in modo da poter inizializzare una variabile complessa con una notazione un po 'più naturale:

using namespace std::literals; 

std::complex<double> c = 1.2 + 3.4i; 

In questo caso, (ovviamente abbastanza) il 1.2 è la parte reale e la 3.4 è la parte immaginaria.

6

Prova questo:

#include <complex> 
#include <iostream> 
using namespace std; 
int main() 
{ 
    complex<double> a = {1,2}; 
    complex<double> b(3,4); 

    cout << a + b << "\n"; 
} 
7

The constructor of std::complex ha due parametri:

  • Il primo, che vanta la parte reale del numero.
  • Il secondo, che ha la parte immaginaria del numero.

Ad esempio:

std::complex<float> my_complex(1,1); //1 + 1i 

Inoltre, C++ 11 introduce user defined literals a scomparsa che permette di implementare (o essere implementato dalla libreria standard, come in questo C++14 accepted proposal) un letterale per facile -utilizzare numeri complessi:

constexpr std::complex<float> operator"" i(float d) 
{ 
    return std::complex<float>{0.0L,static_cast<float>(d)}; 
} 

è possibile utilizzare questo come segue:

auto my_complex = 1i; // 0 + 1i 
+0

'1i' ha un significato separato in C++ come numero intero. Non è vero? – user2029077

+0

@MinimusHeximus No: http://en.cppreference.com/w/cpp/language/integer_literal – Manu343726

+0

btw, 'cout << 123i <<" \ n ";' non ha errori nel mio Ubuntu Qt Creator. – user2029077