c++越界问题
下面是我的源码
#include <vector>
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
//有俩个点一样的返回真
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中的值].......[vvIter中的值].......
void MyResult(vector<vector<int>> vvInput, map<vector<int>, vector<int>>& mResult, vector<vector<int>>& vResult)
{
mResult.clear();
vResult.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())
{
vIter++;
mResult[vTemp].push_back(*vIter);
}
}
else
vResult.push_back(vTemp);
}
}
};
int main()
{
vector<vector<int>> input();
map<vector<int>,vector<int>> mResult;
vector<vector<int>> vResult;
MyResult(input(),mResult,vResult);
return 0;
}
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;
}