说我写了一个名为的泛型函数interpolate.它的签名是这样的:
template<typename T>
T interpolate(T a, T b, float c);
Run Code Online (Sandbox Code Playgroud)
其中a和b是要插入的值,而c是[0.0,1.0]中的浮点数.
当且仅当T具有T operator*(float)和T operator+(T)所定义,我想这表现某种方式(线性插值).否则,它会表现得不同 - 以任何T可用的方式(最近邻插值).
我怎样才能实现这种行为?
例如:
interpolate<std::string>("hello","world!", 0.798); //uses nearest neighbor, as std::string does not have the necessary operators
interpolate<double>(42.0,128.0, 0.5); //uses linear, as double has the needed operators
Run Code Online (Sandbox Code Playgroud)
注意:这个问题不是关于这些插值方法的实现,只是如何使用模板来切换函数的行为.
说我有对象:
var object = {
1: [2,5,"hi"],
hi: {hihi: 1}
};
Run Code Online (Sandbox Code Playgroud)
我如何将其转换为字符串,然后返回,以保留所有信息?我需要使用它来处理一个大对象,而值本身就是对象。
这不是重复的,其他都不涉及将对象取回。