好的..所以我正在研究C ++上的这段代码。代码如下..
#include <iostream>
#include <ctime>
#include <string>
#include <vector>
using namespace std;
vector<int> makePerson(int n)
{
vector<int>person;
for(int i=0;i<3;i++)
{
person.push_back(rand()%255+1);
}
return person;
}
vector<vector<int> > makeGeneration(int n)
{
vector<vector<int> > generation;
for(int i=0;i<n;i++)
{
generation.push_back(makePerson(i));
}
return generation;
}
vector<int> createChild(vector<vector<int> > &parentGeneration, double mutationRate)
{
int maleParent = (rand()%parentGeneration.size())+1;
int femaleParent = (rand()%parentGeneration.size())+1;
bool checkGender = true;
while(checkGender)
{
if(maleParent==femaleParent)
{
checkGender = true;
}
else
{
checkGender = false;
break;
}
}
vector<int> child;
vector<int> temp;
for(int i=0;i<3;i++)
{
temp.push_back(parentGeneration.at(maleParent).at(i));
temp.push_back(parentGeneration.at(femaleParent).at(i));
}
for(int i=0;i<3;i++)
{
child.push_back(temp.at((rand()%3)+1));
}
temp.clear();
for(int i=0;i<3;i++)
{
if((mutationRate*100) > (rand()%100)+1)
{
child.at(i)=(rand()%255)+1;
}
}
return child;
}
int main()
{
int N,k,g;
N=1000;
k=2;
double m=0.05;
double d=0.05;
srand(static_cast<unsigned int>(time(0)));
vector<vector<int> > parentGeneration;
vector<vector<int> > childGeneration;
parentGeneration = makeGeneration(N);
for(int i=0;i<parentGeneration.size();i++)
{
for(int j=0;j<3;j++)
{
cout<<parentGeneration.at(i).at(j)<<endl;
}
cout<<endl;
}
cout<<"reach"<<endl;
for(int i=0;i<(1000);i++)
{
childGeneration.push_back(createChild(parentGeneration,m));
}
cout<<"***CHILD GENERATION***"<<endl;
for(int i=0;i<childGeneration.size();i++)
{
for(int j=0;j<3;j++)
{
cout<<childGeneration.at(i).at(j)<<endl;
}
cout<<"i="<<i<<endl;
cout<<endl;
}
return 0;
}
所以,错误是:
我认为这是向量和随机生成器的一些问题,因为这个错误是随机的。它有时会工作到1000,有时会在两者之间停止。
任何建议。 真的很紧急..
PLEASEEEE 谢谢你的支持:D
答案 0 :(得分:2)
我遇到了与代码类似的问题。我终于决定使用微软的应用程序验证程序,这让我可以解决这个问题。查找应用程序验证程序并下载它。然后运行位于C:\ Windows \ System32文件夹中的可执行文件appverifier.exe。选择您的可执行文件并启用内存检查。然后像往常一样在visual studio中运行代码,它应该跳到问题所在的位置或附近。它不会为您完成所有工作,但如果您知道您的代码,它肯定会有所帮助。