- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想通过这样的 if 语句来选择集成方案:
//stepper_type steppr; ??
if (integration_scheme == "euler") {
[auto] stepper = euler<state_type>{};
}
else
{
[auto] stepper = runge_kutta4<state_type>{};
}
但是步进器只在大括号内有效。在 if 语句之前定义的步进器类型是什么?另一种方法是将集成方案(甚至步进器)作为参数传递给函数。
最佳答案
在 C++17 及更高版本中,为此我们可以按如下方式应用 std::variant
:
#include <variant>
class state_type {};
template<class T>
class euler {};
template<class T>
class runge_kutta4 {};
template<class T>
using stepper_t = std::variant<euler<T>, runge_kutta4<T>>;
然后你可以这样做:
stepper_t<state_type> stepper;
if (integration_scheme == "euler") {
stepper = euler<state_type>{};
}
else{
stepper = runge_kutta4<state_type>{};
}
std::cout << stepper.index(); // prints 0.
但是虽然我不知道你项目的全部代码,但我想后面的代码不会像上面那样简单。如果我是你,我会将基础类 stepperBase
和 euler
和 runge_kutta4
定义为 stepperBase
的继承。
关于c++ - 通过 if 语句在 odeint 中选择步进器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58353704/
有没有办法在 D 范围内创建一个步骤?例如,在 python 中, 范围(1、10、2)给我 [1, 3, 5, 7, 9] 1 .. 10 以内的所有赔率 有没有办法在 D 中使用
我在 javascript 和 css(没有 jquery 或其他任何东西)中的幻灯片作业有问题。 此幻灯片应该有两种模式,一种是 i) 自动显示图片,另一种是 ii) 手动更改它们。该按钮应分别更改
我有一个在堆栈上声明的结构。这是结构的样子: struct MyStruct { int integer; std::vector booleanVector; }; 当我使用 gdb
我的容器进入第一行,但是当 float 导致第二行开始时,第二行没有进入。如何防止踩踏? HTML echo "". $row["FirstName"]. "" . $day_month .""; C
我们在 VMWare 中运行 Linux Debian。使用 gdb 调试时,如果尝试跨过 memset/memcmp/strcmp 等...,gdb 会返回以下错误: Cannot find bou
我是一名优秀的程序员,十分优秀!