二维数组元素压进到二维容器中

二维数组元素压入到二维容器中
初始化信息:
C/C++ code

vector<vector<double> > m_dblvecMatrix; //系数矩阵
//初始化系数矩阵
double CmatrixLeft[6][6] = {{0.56827279,0.00407769,0.158461339,0.000732049,0.007614832,-0.000760258},
{-0.009595896,-0.715790491,-0.004614627,0.010786434,-0.00055647,-0.000170928},
{-0.000450047,-0.02671666,-0.697471736,-0.000647249,0.002850714,-0.000221244},
{0.006224745,0.043482445,-0.037984959,0.023356307,-0.003112434,-0.000821502},
{0.030465765,0.016188658,0.016496178,-0.003668693,-0.023773707,0.000498324},
{0.026011337,0.131331653,-0.008425297,-0.002397693,-0.001002133,0.050552649}};


构造函数:
C/C++ code

m_dblvecMatrix.resize(6);
for (int i=0;i<6;i++)
{
    m_dblvecMatrix[i].resize(6,0.0);
}





将这个二维数组元素压入到二维容器中,代码如下:
C/C++ code

for (int i=0; i<6; i++)
{
for (int j=0; j<6; j++)
   {
      m_dblvecMatrix[i].push_back(CmatrixLeft[i][j]);
   }
}




编译的时候没有错误,可是运行调试的时候错误,出现异常,数据压不进去。 望高手们帮忙看看!

------解决方案--------------------
for (int i=0; i<6; i++)
{
for (int j=0; j<6; j++)
{
m_dblvecMatrix[i].push_back(CmatrixLeft[i][j]);
}
}
声明的是vector<vector<double> > m_dblvecMatrix; //系数矩阵

这种压法肯定有问题了,这样是二维数组中数据一个个压进去的。而你的类型是vector<vector<double> >
也就是vector<double>类型的






------解决方案--------------------
m_dblvecMatrix[i].resize(6,0.0);这句不需要。
------解决方案--------------------
去掉如下语句
for (int i=0;i<6;i++)
  {
m_dblvecMatrix[i].resize(6,0.0);
  }

或者

m_dblvecMatrix[i].push_back(CmatrixLeft[i][j]); 
改为:
m_dblvecMatrix[i][j] = CmatrixLeft[i][j];

------解决方案--------------------
这样试试
C/C++ code

#include<iostream>
#include <vector>
using namespace std;
vector<vector<double> > m_dblvecMatrix; //系数矩阵
//初始化系数矩阵
double CmatrixLeft[6][6] = {{0.56827279,0.00407769,0.158461339,0.000732049,0.007614832,-0.000760258},
{-0.009595896,-0.715790491,-0.004614627,0.010786434,-0.00055647,-0.000170928},
{-0.000450047,-0.02671666,-0.697471736,-0.000647249,0.002850714,-0.000221244},
{0.006224745,0.043482445,-0.037984959,0.023356307,-0.003112434,-0.000821502},
{0.030465765,0.016188658,0.016496178,-0.003668693,-0.023773707,0.000498324},
{0.026011337,0.131331653,-0.008425297,-0.002397693,-0.001002133,0.050552649}};
int main()
{
    for (int i=0; i<6; i++)
    {
        vector<double>tmp;
        for (int j=0; j<6; j++)
        {
            tmp.push_back(CmatrixLeft[i][j]);//m_dblvecMatrix[i].push_back(CmatrixLeft[i][j]);
        }
        m_dblvecMatrix.push_back(tmp);
    }
    return 0;
}

------解决方案--------------------
微笑,啥意思?搞定了?

如果没搞定,也不要老盯着这几条代码看,看看别的地方。也许把手头的书全看一遍,工程的代码全看一遍,就知道问题在哪了。
------解决方案--------------------
探讨

错误: ForcePlate.exe 中的 0x00a3aa24 处最可能的异常: 0xC0000005: 读取位置 0xcdcdcdc8 时发生访问冲突