c ++语法误解

时间:2013-11-26 22:05:49

标签: c++ syntax

我对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;
}

1 个答案:

答案 0 :(得分:1)

1)这就是所谓的初始化列表。在this page.

上查看名为“使用初始化列表初始化字段”的部分

2/3)由于数组实际上只是通过指针算法访问的连续内存块,因此多维数组只是编译器提供的一种抽象,使编程更容易。由于括号运算符[]只是指针运算的简写,因此使用单个索引访问声明为多维的数组是一种有效的做法。有关多维数组here

的部分,请阅读更多内容