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

梦境传说 2012-09-07 01:43:33
初始化信息:

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}};


构造函数:

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




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

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



编译的时候没有错误,可是运行调试的时候错误,出现异常,数据压不进去。 望高手们帮忙看看!
...全文
361 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
梦境传说 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

微笑,啥意思?搞定了?

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


谢谢你的提示。 我那代码写的没有问题,是整个工程架构,是看看全部代码。
xmu_才盛 2012-09-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

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

空指针的访问问题, 单步跟踪一下吧。
zjs100901 2012-09-13
  • 打赏
  • 举报
回复
微笑,啥意思?搞定了?

如果没搞定,也不要老盯着这几条代码看,看看别的地方。也许把手头的书全看一遍,工程的代码全看一遍,就知道问题在哪了。
梦境传说 2012-09-12
  • 打赏
  • 举报
回复
梦境传说 2012-09-07
  • 打赏
  • 举报
回复
错误: ForcePlate.exe 中的 0x00a3aa24 处最可能的异常: 0xC0000005: 读取位置 0xcdcdcdc8 时发生访问冲突
梦境传说 2012-09-07
  • 打赏
  • 举报
回复
谢谢你 zhang20072844

测试代码是正确的,可是把他放到MFC工程里就不对,还是异常,压不进去。

void CForcePlateDoc::AddSubData(double pVal[])
{
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.push_back(tmp);
}
}

执行到这个一步:m_dblvecMatrix.push_back(tmp); 还是压不进去。
libinfei8848 2012-09-07
  • 打赏
  • 举报
回复
程序是没问题的,可以编译,你还是贴你编译出错的信息提示吧
AndyZhang 2012-09-07
  • 打赏
  • 举报
回复
push_back的内容要和vector里面的一样,所以不能向前几楼说的
AndyZhang 2012-09-07
  • 打赏
  • 举报
回复
这样试试

#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;
}
梦境传说 2012-09-07
  • 打赏
  • 举报
回复
VC6 用的少。 我们项目都是用VS2008,VS2010
libinfei8848 2012-09-07
  • 打赏
  • 举报
回复
你不会用的vc6的编译器吧,这语法没发现有大问题啊
梦境传说 2012-09-07
  • 打赏
  • 举报
回复
这样修改还是不对啊:

for (int i=0; i<6; i++)
{
for (int j=0; j<6; j++)
{
m_dblvecMatrix[i][j] = CmatrixLeft[i][j];
}
}
梦境传说 2012-09-07
  • 打赏
  • 举报
回复
好的,谢谢你们! 我试试。
dhdahai 2012-09-07
  • 打赏
  • 举报
回复
去掉如下语句
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];
zjs100901 2012-09-07
  • 打赏
  • 举报
回复
m_dblvecMatrix[i].resize(6,0.0);这句不需要。
神的理想 2012-09-07
  • 打赏
  • 举报
回复
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>类型的





64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧