我想完成以下事项:
现在,我目前有一个使用宏的编译时解决方案,do {} while(0)如果没有使用正确的标志编译库,则解析为a .
我想将此功能转移到在运行时启用.做这个的最好方式是什么?
我想做:Base * obj = (isGlobalDebugEnabled) ? new Debug(...) : new Base(...);输入东西.我是不是想要这样的东西?
注意,标准虚函数并不能真正解决问题,因为每个函数都必须在对象的派生(调试)版本中复制,从而破坏了目的.
此外,最低级别的功能是非常高的音量(配置文件时大于6000亿次调用)所以我想为"基类"编译一个编译的零开销解决方案.当然,Debug对象可能更慢.
这就是我想到模板的原因.注意:除了VS2010功能(基本lambda等)之外,我没有C++ 11/boost访问权限.我能做点什么吗
template <bool debug = false>
class Object {
std::enable_if<debug> void printTrace(); // Add functions based on debug/not
};
void Object::doSomething(...){
<only do this if debug without runtime check> addToTrace(...);
doTheStuff();
}
Run Code Online (Sandbox Code Playgroud)
我看到这个链接指向我伪造的继承与模板方向,如果这有帮助.
谢谢您的帮助
AK
编辑:我刚刚意识到我可能会采用错误的方式 - 可能将Debug对象作为基类,并在Regular对象中使用no-ops覆盖功能.这似乎是一种更好的方式.但是,由于这些高性能要求,我仍然希望避免vtable跳转,所以我猜我的模板问题仍然存在?也许?
编辑2:正如KerrickSB所指出的,使用的一个例子可能更清楚:
主要代码:
void ComputeSomething() {
Object * obj = (globalDebugFlag) …Run Code Online (Sandbox Code Playgroud) 我有两个我希望相同的data.frames ,但是same()返回false。
作为背景,一个DF来自Iris数据ARFF文件,另一个来自.rdata文件(如果更改了任何内容)
x == y中的所有元素均为TRUE,两个变量的类相同,两个行名也相同,列名也相同。
如何确定是什么触发了FALSE输出?
编辑:all.equal的输出,如下所述
[1] "Component 1: Attributes: < Modes: list, NULL >"
[2] "Component 1: Attributes: < names for target but not for current >"
[3] "Component 1: Attributes: < Length mismatch: comparison on first 0 components >"
Run Code Online (Sandbox Code Playgroud)
编辑:两者的属性的输出
> attributes(dataset)
$names
[1] "Class" "petal-length" "petal-width" "sepal-length" "sepal-width"
$row.names
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 …Run Code Online (Sandbox Code Playgroud) 我需要一些逻辑上等价的东西
select cast(* as numeric IF data_type='decimal') from table_name
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做,所以我想把它分成两个步骤:
select * from table_name where data_type!='decimal'
select cast(* as numeric) from table_name where data_type='decimal'
Run Code Online (Sandbox Code Playgroud)
但我意识到我也不知道该怎么做。由于 SO,我可以找到十进制的列名列表,但由于这是一个批处理过程,我不能将其分为两个步骤
我正在尝试做的可能吗?我只想得到一组列,但如果它们是十进制的,则将它们转换为双精度。
谢谢!
c ×1
c++ ×1
dataframe ×1
inheritance ×1
macros ×1
memset ×1
optimization ×1
r ×1
sql ×1
templates ×1