在C+;中实现2D数组最省时的方法+;? 在C++中实现2D数组的最具有时效性的方法是什么?我关心的是:插入、删除和查找
我读过这两种方法:在C+;中实现2D数组最省时的方法+;? 在C++中实现2D数组的最具有时效性的方法是什么?我关心的是:插入、删除和查找,c++,matrix,C++,Matrix,我读过这两种方法: 向量-嵌套向量 vector-带有指向其他向量指针的向量 我发现第一个选项很容易实现,但是还有其他更省时的方法吗?我的建议: 创建一个类,矩阵 仔细定义接口,以免暴露内部数据结构细节 首先使用其中一种捕获数据的方法。我建议从一个1D数组开始 如果遇到任何性能或维护问题,请更改内部数据以使用其他策略 我的建议是: 创建一个类,矩阵 仔细定义接口,以免暴露内部数据结构细节 首先使用其中一种捕获数据的方法。我建议从一个1D数组开始 如果遇到任何性能或维护问题,请更改内部数据以使用其
vector
-带有指向其他向量指针的向量矩阵
矩阵
要为大小
MxN
初始化该矩阵,只需执行以下操作:
std::vector<std::vector<dataType>> MyMat = std::vector<std::vector<dataType>>(M,std::vector<dataType>(N,0));
然后创建一个访问器,该访问器将按元素访问元素:
dataType& getElement(int i, int j)
{
return MyMat[M*i+j];
}
这样你可以得到最好的表现。当然,还有更多关于性能的细节,但这足以回答您的问题
顺便说一句,你不应该自己做矩阵运算。在最好的情况下,如果您是一名专业的高性能开发人员,您应该使用一些LAPACK实现来为您执行矩阵操作(就像他以前所做的那样)。要初始化该矩阵的大小
MxN
,您所要做的就是:
std::vector<std::vector<dataType>> MyMat = std::vector<std::vector<dataType>>(M,std::vector<dataType>(N,0));
然后创建一个访问器,该访问器将按元素访问元素:
dataType& getElement(int i, int j)
{
return MyMat[M*i+j];
}
这样你可以得到最好的表现。当然,还有更多关于性能的细节,但这足以回答您的问题
顺便说一句,你不应该自己做矩阵运算。在最好的情况下,如果你是一个专业的高性能开发人员,你应该使用一些LAPACK实现来为你做矩阵运算(就像他以前做的那样)。这项技术
向量矩阵[size]
你可以遵循。你可能对像或这样的线性代数库感兴趣。这项技术向量矩阵[size]
你可以跟着。你可能对线性代数库感兴趣,比如或。