- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在寻找一个函数,该函数返回对 C++11 中复数的实数或虚数值的引用。在 C++03 中我可以说:
complex<double> C; cin >> C.real();
但在 C++11 中,由于 C.real() 返回的值不是引用,因此会出现编译错误。
我发现我可以这样写:
double t; cin >> t; C.real(t);
但这并不简单,例如,如果我想将 c 的实数部分乘以 2 并将其乘以 1,我应该说:
C.real(2*C.real() + 1);
那不干净。
还有其他[干净]的方法吗?
最佳答案
如果您真的想将复数的实部和虚部的输入分开,您可以尝试 IO 操纵器方法。
#include <complex>
#include <iosfwd>
class proxy_complex {
explicit proxy_complex(std::istream& strm, bool f)
: strm_(&strm), flag(f) { }
proxy_complex(const proxy_complex&) = default;
std::istream* strm_;
bool flag; // flag to check whether we're writing real or imag
public:
template<typename T>
std::istream& operator>>(std::complex<T>& c)
{
T n;
if (*strm_ >> n)
flag ? c.real(n) : c.imag(n);
return *strm_;
}
friend proxy_complex operator>>(std::istream& is, proxy_complex(*func)(std::istream&))
{
return func(is);
}
friend proxy_complex real(std::istream&);
friend proxy_complex imag(std::istream&);
};
inline proxy_complex real(std::istream& is)
{
return proxy_complex(is, true);
}
inline proxy_complex imag(std::istream& is)
{
return proxy_complex(is, false);
}
您可以将上述代码放在它自己的头文件中(如果这样做,最好将其包装在命名空间中)。
用法:
#include <iostream>
#include "my_header.h"
int main()
{
std::complex<double> c;
std::cin >> real >> c >> imag >> c;
if (std::cin) std::cout << c;
}
希望我猜对了你对“干净”的定义:)
关于c++ - 返回对 C++11 中复数的实数或虚数值的引用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19175776/
我有一个方法需要 3 double s 并通过二次公式计算根: public static double[] quadraticFormula(double a, double b, double c
我正在写一些 SymPy 代码来处理带有虚数的符号表达式。 首先,我想让它把 x 和 y 作为实数,并找到 x=iy 的解。所以我可以按如下方式进行。 x, y = sympy.symbols("x
如果我得到了傅里叶变换的极坐标,并且我想返回到笛卡尔(实数/虚数)坐标,我该怎么做呢? 我可以使用以下代码从笛卡尔坐标中获取极坐标数: private double GetPhase(doub
我是一名优秀的程序员,十分优秀!