c++运行时疏失
c++运行时出错
错误如下
------解决方案--------------------
一般都是迭代器范访问超界,可以点忽略进入错误位置中断看看
------解决方案--------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据读写断点。如果该地址对应其它变量干扰判断,可将数组多声明一个元素,并设置数据读写断点在该多出元素对应的地址上。
我确定我没(粘)贴错地方!
#include <vector>
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int main()
{
void MyResult(vector<vector<int>> vvInput, map<vector<int>, vector<int>>& mResult);
bool MyFun(vector<int> v1, vector<int> v2);
//vector<vector<int>> fun(const vector<vector<int> > indexArrs);
vector<vector<int>> input();
map<vector<int>,vector<int>> mResult;
MyResult(input(),mResult);
getchar();
return 0;
}
//有俩个点一样的返回真
bool MyFun(vector<int> v1, vector<int> v2)
{
int nCount = 0;
for (int i=0; i<3; i++)
{
if (find(v1.cbegin(),v1.cend(), v2[i]) != v2.cend())
nCount++;
}
if (nCount<2)
return false;
else
return true;
};
//map存的是结果
//最终结果输出格式为[mIter.fist,mapIter.second].......
void MyResult(vector<vector<int>> vvInput, map<vector<int>, vector<int>>& mResult)
{
mResult.clear();
vector<vector<int>>::const_iterator vvIter = vvInput.cbegin();
for (; vvIter != vvInput.cend(); vvIter++)
{
vector<int> vTemp = *vvIter;
for (vvIter++; vvIter != vvInput.cend(); vvIter++)
{
if (MyFun(vTemp, *vvIter))
{
vector<int>::const_iterator vIter = (*vvIter).cbegin();
while (vIter != (*vvIter).cend())
{
vvIter++;
mResult[vTemp].push_back(*vIter);
}
}
}
}
};
vector<vector<int>> input() //输入
{
vector<int> indexArr;
indexArr.push_back(0);
indexArr.push_back(1);
indexArr.push_back(2);
indexArr.push_back(0);
indexArr.push_back(2);
indexArr.push_back(3);
indexArr.push_back(4);
indexArr.push_back(5);
indexArr.push_back(6);
int num=indexArr.size()/3;
int n=0;
vector<vector<int>> indexArrs(num);
vector<vector<int>>::iterator itera;
for(vector<int>::iterator iter=indexArr.begin(); iter!=indexArr.end(); iter++)
{
indexArrs[n/3].push_back(*iter);
n++;
}
return indexArrs;
}
错误如下
------解决方案--------------------
一般都是迭代器范访问超界,可以点忽略进入错误位置中断看看
------解决方案--------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据读写断点。如果该地址对应其它变量干扰判断,可将数组多声明一个元素,并设置数据读写断点在该多出元素对应的地址上。
我确定我没(粘)贴错地方!