gpt4 book ai didi

c++ - 利用 max_element?

转载 作者:行者123 更新时间:2023-11-28 01:52:25 29 4
gpt4 key购买 nike

我有以下内容

static const unsigned int chromosome = 6;
double bestFitness[chromosomes];

for(int i = 0; i < chromosomes; i++){
bestFitness[i] = estimateFitness(currPopultaion[i]);
}

int best1 = 0;
best1 = max_element(bestFitness, bestFitness + chromosomes) - bestFitness;
.......

IDE 似乎发出警告 “隐式转换丢失整数精度:'long' 到 'int'”

同样在检查 best1 的值时,它似乎总是在编译时被分配为 0。

我目前无法理解 max_element() 函数是否按预期调用。

最佳答案

两个指针之差的类型为std::ptrdiff_t , 它是有符号的并且可能是比 int 更宽的类型.您应该更改 best1 的类型至 std::ptrdiff_t .

您还可以使用 std::distance计算距离,从 <iterator> :

std::ptrdiff_t best1 = std::distance(
bestFitness,
std::max_element(bestFitness, bestFitness + N));

当然,您可以根据迭代器重写代码并完全放弃索引。

另请注意,如果输入范围为空,则返回的迭代器通常可能位于末尾之后。这不会发生在你的情况下(因为数组总是有非零大小),但在更一般的设置中,这是你需要考虑的事情。

另请注意,您无需记住数组大小;它是类型的一部分,可以通过 begin 获得/end , 也来自 <iterator> :

std::max_element(std::begin(bestFitness), std::end(bestFitness));

关于c++ - 利用 max_element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42463818/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com