Making use of max_element?
Making use of max_element?
我有以下
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'to'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));
相关文章:
- <streamsize>C++ 中 numeric_limits::max() 的值
- 黑客级别的Mini-Max Sum
- 'max'匹配'std::function<const int &(const int &, const int &)>'无过载
- 关于 std::min, std::max 中的比较运算符的混淆
- 找到一种有效的方法,在 2 个巨大的缓冲区上执行 MAX,每字节字节
- std::max() 函数与定点实现的比较中的问题
- 使用 CImg 库的 std::min 和 std::max 的编译问题
- 在 3ds Max 中更新进度条后,环境和效果 UI 不刷新
- 从自定义类获取对象向量中的 max 元素
- 如何在C++中递归地找到max元素的索引?
- SFINAE 与 numeric_limits<T>::max() 在 MSVC2017 上
- 这句话是什么意思 - " vector<long long> distance(n, std::numeric_limits<long long>::max()); "?
- 如何将 bsoncxx::d ocument::element 写入控制台
- 在f2c.h文件中定义min()max()宏时出错
- c++curl返回413请求实体过大,但是post大小远小于max大小
- 在枚举类型上使用std::max是不是一种糟糕的做法
- 为什么Visual Studio 2019不支持用于减少Openmp的关键字"max"?
- 没有函数模板的实例"max"与参数列表参数类型匹配(int、int)
- 如何在 C++11 中将 std::max 与自定义比较器一起使用?
- 为什么在这种情况下不能将 Max 用作函数?