我对c ++很新,有人可以告诉我以下行的含义:
TSP::TSP(double crossoverProbability, double mutationProbability) :
crossoverProbability(crossoverProbability), mutationProbability(mutationProbability),
solutions(new int[chromosomes][cities]), newPopulation(new int[chromosomes][cities])
1。)':'是什么意思?
2.。)在程序的后期,'solutions'被用作一维数组,为什么它是二维数组?
稍后使用的“解决方案”示例:
for(size_t i = 0; i < chromosomes; ++i)
{
sum += fitness[i];
if(sum >= random)
{
return solutions[i];
}
}
3。)newPopulation后来被用作一维数组和二维数组。这怎么可能?
示例:
for(size_t chromosomeIndex = 0; chromosomeIndex < chromosomes; ++chromosomeIndex)
{
memcpy(solutions[chromosomeIndex], newPopulation[chromosomeIndex], sizeof(int) * cities);
}
和
for(size_t gene = 0; gene < cities; ++gene)
{
if(chromosome[gene] != newPopulation[chromosomeIndex][gene])
{
/* These chromosomes are not equal! */
break;
}
++genesCompared;
}
答案 0 :(得分:1)
1)这就是所谓的初始化列表。在this page.
上查看名为“使用初始化列表初始化字段”的部分2/3)由于数组实际上只是通过指针算法访问的连续内存块,因此多维数组只是编译器提供的一种抽象,使编程更容易。由于括号运算符[]只是指针运算的简写,因此使用单个索引访问声明为多维的数组是一种有效的做法。有关多维数组here
的部分,请阅读更多内容