我已经写了下面这个获取最大数目的索引值。返回索引的最大值
int TravellingSalesMan::getMaximum(double *arr){
double temp = arr[0];
int iterator = 0;
for(int i = 0; i < 30; i++){
if(arr[i] > temp){
iterator = i;
}
}
return iterator;
}
但输出保持步入条件语句,并不断打印出29.我不知道为什么会这样
我使用max_element(也尝试过),但没有运气
EDIT
上述函数被调用,如下
static unsigned int chromosome = 30;
double value[chromosome]
for(int i = 0; i < chromosomes; i++){
value[i] = estimateFitness(currPopultaion[i]);
}
int best = 0;
best = getMaximum(value);
cout<<best<<endl; // this just prints out 29
投票结束,因为缺少可重复的示例 –
“保持打印出29” - 此代码中没有任何内容会生成任何输出。如何处理产生你所描述问题的[minimal,** complete **,example](https://stackoverflow.com/help/mcve)?而且,'temp = arr [i]'最好在某处,否则你所做的就是将所有内容与'arr [0]'中的任何内容进行比较。我的水晶球告诉我,阿尔[29]就是这样。 – WhozCraig
首先,你使用变量名**迭代器**是非常错误的。它不用于迭代列表。为什么会造成混淆?最好使用像MaxIndex或类似的东西。 –