Инициализация массива комплексных чисел в C++
Мне нужно создать массив, который состоит из комплексных чисел. Я использовал следующий код для его инициализации.
std::complex<double> Uf[2]={(1, 2),(3, 4)};
Я ожидаю, что Uf[0] будет 1 + 2*i
а также Uf[1]
быть 3+ 4*i
но когда я отлаживал программу, я обнаружил, что мнимые значения показаны как реальные, и неожиданно мнимое значение равно нулю для обоих чисел (т.е. Uf[0]
реально: 2.0000..
емк: 0.0000
.... а также Uf[1]
реально: 4.0000
.. imag: 0.0000
... Может кто-нибудь объяснить мне, как это решить?
Спасибо
2 ответа
Это потому, что вы используете оператор запятой, поэтому комплексные значения будут инициализированы с 2
а также 4
соответственно. Замените круглые скобки вместо фигурных скобок:
std::complex<double> Uf[2]={{1, 2},{3, 4}};
Если вышеприведенное не работает, ваш компилятор не совместим с C++11, и вы должны явно создать сложные элементы массива:
std::complex<double> Uf[2]={std::complex<double>(1, 2),std::complex<double>(3, 4)};
Вы неправильно инициализируете массив. Попробуй это:
std::complex<double> Uf[2]={{1, 2},{3, 4}};