首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-09-27 
二维数组元素压入到二维容器中初始化信息:C/C++ codevectorvectordouble m_dblvecMatrix //系数矩阵

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

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 时发生访问冲突

热点排行