Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;ode系统:如何处理? 我想用C++语言编写一个类来解决 >系统> /Stand,C++中的Euler方法(我是初学者)。如果方程是标量的,就没有问题,因为我可以将解存储在向量中,或者我可以用double*sol=new double[N_points]_C++_Arrays_Eigen_Numeric - Fatal编程技术网

C++;ode系统:如何处理? 我想用C++语言编写一个类来解决 >系统> /Stand,C++中的Euler方法(我是初学者)。如果方程是标量的,就没有问题,因为我可以将解存储在向量中,或者我可以用double*sol=new double[N_points]

C++;ode系统:如何处理? 我想用C++语言编写一个类来解决 >系统> /Stand,C++中的Euler方法(我是初学者)。如果方程是标量的,就没有问题,因为我可以将解存储在向量中,或者我可以用double*sol=new double[N_points],c++,arrays,eigen,numeric,C++,Arrays,Eigen,Numeric,如果我必须处理矩阵,事情开始变得奇怪,所以我的问题是:*我应该使用一些库作为Eigen?还是我应该与指针斗争 我正在寻找一些好的方法/参考,以确定哪种方法是处理这种情况的正确/最佳方法。如果您想使用矩阵,您可以使用数组数组,或者使用带有一维数组(或向量)的简化抽象层来存储矩阵数据,如: std::向量矩阵(行*列); 要访问项目,可以使用简单的算法,如: int index = rowIndex * totalColumns + columnIndex; double item = matri

如果我必须处理矩阵,事情开始变得奇怪,所以我的问题是:*我应该使用一些库作为
Eigen
?还是我应该与指针斗争


我正在寻找一些好的方法/参考,以确定哪种方法是处理这种情况的正确/最佳方法。

如果您想使用矩阵,您可以使用数组数组,或者使用带有一维数组(或向量)的简化抽象层来存储矩阵数据,如:

std::向量矩阵(行*列);
要访问项目,可以使用简单的算法,如:

int index = rowIndex * totalColumns + columnIndex;
double item = matrix[index];

您可以查看我的库(不使用它,只需查看),以获得此实现的示例。

如果您想使用矩阵,您可以使用数组数组,或者使用带有一维数组(或向量)的简化抽象层来存储矩阵数据,如:

std::向量矩阵(行*列);
要访问项目,可以使用简单的算法,如:

int index = rowIndex * totalColumns + columnIndex;
double item = matrix[index];

您可以查看我的库(不使用它,只需查看),以获得此实现的示例。

答案很少是“与指针斗争”。获取一个库,否则您将被迫自己编写和调试一个库。在C++中使用<代码> STD::向量< /代码>每当你可以对代码>新[]/Cord>。@ TADMAN谢谢你的建议。但向量只适用于标量情况,而这里我应该将解存储在matrix@tadman还有,我为什么要避免动态分配呢?如果动态分配,最终必须释放内存,这可能很难跟踪
std::vector
和其他容器将为您处理此问题。如果每个分配的所有权不明确,C++中的内存管理会变得非常复杂,而且在容易理解和完全混淆之间有一条非常细的线。向量的问题是,如果我想使用元素来处理“矩阵”,那么访问元素并不“容易”。答案很少是“与指针斗争”。获取一个库,否则您将被迫自己编写和调试一个库。在C++中使用<代码> STD::向量< /代码>每当你可以对代码>新[]/Cord>。@ TADMAN谢谢你的建议。但向量只适用于标量情况,而这里我应该将解存储在matrix@tadman还有,我为什么要避免动态分配呢?如果动态分配,最终必须释放内存,这可能很难跟踪
std::vector
和其他容器将为您处理此问题。如果每个分配的所有权不明确,C++中的内存管理会变得非常复杂,而且在容易理解和完全混淆之间有一条非常细的线。向量的问题是,如果我想使用元素来处理“矩阵”,那么访问元素并不“容易”。我认为,在数值分析的背景下,这种访问项目的方式容易出错。你知道chanche还有其他方法吗?你可以更精确地使用容器容器,如
std::vector matrix
。当您访问时,可以使用
matrix[row][col]
我认为这种访问项目的方式有点容易出错,这里没有人实际上意味着您会在任何地方重复这种访问模式。您应该编写一次代码,并在执行访问的任何地方使用该代码。在C++中,你有一个访问函数,C++中你有方法。@ ViiSuSalMDA只需要再问一个问题:如果我想做一些事情,比如<代码>矩阵[[,0 ] < /Cord>(所有行,第一列),我每次都要做一个循环吗?如果你来自MATLAB,不要认为这是它在引擎盖下做不到的。您可以使用其他访问方法返回矩阵的子向量,如
matrix.subvector(所有行,3)
向每行或每列传递标志。仅根据您的需要,我认为这种访问项目的方式在数值分析环境中容易出错。你知道chanche还有其他方法吗?你可以更精确地使用容器容器,如
std::vector matrix
。当您访问时,可以使用
matrix[row][col]
我认为这种访问项目的方式有点容易出错,这里没有人实际上意味着您会在任何地方重复这种访问模式。您应该编写一次代码,并在执行访问的任何地方使用该代码。在C++中,你有一个访问函数,C++中你有方法。@ ViiSuSalMDA只需要再问一个问题:如果我想做一些事情,比如<代码>矩阵[[,0 ] < /Cord>(所有行,第一列),我每次都要做一个循环吗?如果你来自MATLAB,不要认为这是它在引擎盖下做不到的。您可以使用其他访问方法返回矩阵的子向量,如
matrix.subvector(所有行,3)
向每行或每列传递标志。仅取决于您的需要