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+;中实现2D数组最省时的方法+;? 在C++中实现2D数组的最具有时效性的方法是什么?我关心的是:插入、删除和查找_C++_Matrix - Fatal编程技术网

在C+;中实现2D数组最省时的方法+;? 在C++中实现2D数组的最具有时效性的方法是什么?我关心的是:插入、删除和查找

在C+;中实现2D数组最省时的方法+;? 在C++中实现2D数组的最具有时效性的方法是什么?我关心的是:插入、删除和查找,c++,matrix,C++,Matrix,我读过这两种方法: 向量-嵌套向量 vector-带有指向其他向量指针的向量 我发现第一个选项很容易实现,但是还有其他更省时的方法吗?我的建议: 创建一个类,矩阵 仔细定义接口,以免暴露内部数据结构细节 首先使用其中一种捕获数据的方法。我建议从一个1D数组开始 如果遇到任何性能或维护问题,请更改内部数据以使用其他策略 我的建议是: 创建一个类,矩阵 仔细定义接口,以免暴露内部数据结构细节 首先使用其中一种捕获数据的方法。我建议从一个1D数组开始 如果遇到任何性能或维护问题,请更改内部数据以使用其

我读过这两种方法:

  • <代码>向量-嵌套向量
  • vector
    -带有指向其他向量指针的向量
  • 我发现第一个选项很容易实现,但是还有其他更省时的方法吗?

    我的建议:

  • 创建一个类,
    矩阵
  • 仔细定义接口,以免暴露内部数据结构细节
  • 首先使用其中一种捕获数据的方法。我建议从一个1D数组开始
  • 如果遇到任何性能或维护问题,请更改内部数据以使用其他策略
  • 我的建议是:

  • 创建一个类,
    矩阵
  • 仔细定义接口,以免暴露内部数据结构细节
  • 首先使用其中一种捕获数据的方法。我建议从一个1D数组开始
  • 如果遇到任何性能或维护问题,请更改内部数据以使用其他策略

  • 要为大小
    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]
    你可以跟着。你可能对线性代数库感兴趣,比如或。