我在将C++数据结构转换为Scala时遇到问题.Scala与C++完全不同,但我喜欢它.我在C++中有以下代码片段:
struct Output
{
double point;
double solution[6];
};
struct Coeff
{
double rcont1[6];
double rcont2[6];
double rcont3[6];
double rcont4[6];
double rcont5[6];
double rcont6[6];
};
std::list<Output> output;
std::list<Coeff> coeff;
Run Code Online (Sandbox Code Playgroud)
我现在用数据填充while循环列表
while(n<nmax) {
if step successfull
Output out;
out.point = some values;
out.solution[0] = some value;
output.push_back(out);
}
Run Code Online (Sandbox Code Playgroud)
我尝试在Scala中创建一个简单的类来保存数据.
class Output
{
var point: Double
var solution: Array[Double] = new Array(6)
}
Run Code Online (Sandbox Code Playgroud)
但这并不起作用,因为点没有初始化.有没有解决的办法?我只想定义变量但不要初始化它.
另一件快事.我正在寻找与stl :: lower_bound等效的东西.
找到在排序容器中插入元素以维护订单的正确位置.
感谢您帮助Scala初学者
我是Scala编程的新手,在函数式编程和不可变集合方面遇到了一些困难.我试图将我的数字代码从C++移植到Scala.
很多时候我有代码在小向量上运行,如下所示:
double ytmp[6];
for (int i=0; i<6; i++) {
ytmp[i] = y[i] + h*(a41*dydx[i] + a42*k2[i] + a43*k3[i]);
}
Run Code Online (Sandbox Code Playgroud)
如何在高效的Scala中编写类似的东西?我考虑过在开始时使用简单列表,但是对于不可变类型有问题,所以我不能只创建一个空列表ytmp并稍后修改它,就像我习惯于使用C++一样.谢谢您的帮助