麻烦大家帮我看看std::out of range

chenhua8869 2011-09-02 03:15:19
我是菜菜鸟。调试出错的是这句:
index2=min((tempt[j]-tempt[i]-c1[ptmp2.at(i)]-a[ptmp2.at(i)]),(b[ptmp2.at(j)]-tempt[j]+tempt[i]+c1[ptmp2.at(i)]));

有如下的错误提示:static void _Xlen()
{ // report a length_error
_THROW(length_error, "vector<T> too long");
}

static void _Xran()
{ // report an out_of_range error
_THROW(out_of_range, "invalid vector<T> subscript");
}

我检查了下数组tempt, vector 的 ptmp2,以及数组a,b,c1,下标都没问题的。实在不知道怎么改?
大家帮帮忙啊
...全文
123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
翻越寒武 2011-09-02
  • 打赏
  • 举报
回复
是数组越界了吧,你可以让j<ptmp2.size()
chenhua8869 2011-09-02
  • 打赏
  • 举报
回复
谢谢你 我试试! 我正打算手算一遍
小猴饲养员 2011-09-02
  • 打赏
  • 举报
回复
打印数组tempt, vector 的 ptmp2,以及数组a,b,c1的大小0,
运行时打印下标
注意,假设ptmp2的大小为10,那么下标范围是0~9

如果数组或容器的元素多,也可以这样
unsigned int lenPtmp2 = ptmp2.size();
if(lenPtmp2<= i || lenPtmp2 <= j)
{
cout<<"i = "<<i<<", j = "<<j<<endl;
exit(9);
}
chenhua8869 2011-09-02
  • 打赏
  • 举报
回复
index2=tempt[j]-tempt[i]-c1[ptmp2.at(i)]-a[ptmp2.at(i)];
index3=b[ptmp2.at(j)]-tempt[j]+tempt[i]+c1[ptmp2.at(i)];
if(min(index2,index3)<0)

改成这样 还是出错 一样的错误
不知道楼上是不是这意思? {
十八道胡同 2011-09-02
  • 打赏
  • 举报
回复
为啥不分开写的,你调试的时候不方便,阅读你代码的人也不方便

64,649

社区成员

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

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