Инициализация массива комплексных чисел в 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}};
Другие вопросы по тегам