C++的 min_element() 不适用于数组

C++'s min_element() not working for array

本文关键字:不适用 适用于 数组 element min C++      更新时间:2023-10-16

我试图找到c++中数组子集的最小元素,如下所示:

#include <iostream>
#include <algorithm>
using std::cin;
using std::cout;
using std::min_element;
void load_values(int n);
unsigned *w;
int main() {
   int n, a, b;
   cin >> n >> a >> b;
   w = new unsigned[n];
   load_values(n); // sets values to w[i]
   int min = min_element(w+a, w+b);
   }
void load_values(int n) {
 while(n--)
    w[n] = 1;
}

我得到错误invalid conversion from 'unsigned int*' to 'unsigned int' [-fpermissive]。我遗漏了什么?

注意,std::min_element()返回的迭代器指向最小值,而不是值本身。我怀疑你只根据上面的代码得到这个错误:假设正确的包含指令和使用指令,代码编译OK,尽管它会打印最小元素的地址而不是它的值。很可能你的实际代码看起来更像

unsigned min = std::min_element(w + a, w + b);

注意,您还应该检查从std::cin读取的结果:

if (std::cin >> n >> a >> b) {
   // process the values
}

…而且,当然,似乎您正在泄漏分配给w的内存。

相关文章: