C++的 min_element() 不适用于数组
C++'s min_element() not working for array
我试图找到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
的内存。
相关文章:
- FLTK 2.0构建和演示,适用于VS2019的2011年左右的代码库
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 为什么 std::erase(std::erase_if) 不是适用于<algorithm>任何容器的模板?
- 为什么这适用于 G++ 而不是 CLANG?
- 为什么不区分大小写适用于 std::unordered_set的 std::hash 函数?
- 声明适用于 auto,但不能显式声明类型?
- 什么是通用运行时组件 #ifdef 适用于Windows(UWP)而不是iOS
- Windows 上的 Cmake 不添加共享库路径(适用于 linux)
- Typedef适用于结构,但不适用于枚举,仅适用于C++
- 为什么函数模板不理解 NULL,但适用于 nullptr
- 链接器读取库,但在其中找不到符号?未解析的外部符号,但仅适用于 Win32 而不是 x64
- Netbeans 8.1(适用于 C/C++)找不到我的编译器(gcc-6.0.0 开发版本)
- random_shuffle() 适用于 Windows,但不能在 Linux 上编译
- C++指针到方法模板推导在面向 x86 时不编译,但适用于 x64
- 不在异常中嵌入std::字符串的规则是否仍然适用于move构造函数
- 移动文件夹Windows c++:适用于Vista及以上版本,不包括XP
- 适用于Android的Qt找不到任何兼容的设备答案找到但不知道如何
- 在Windows 7上不起作用,但它适用于Windows 8 dll。
- 可变参数模板转换为 std::function<R(ARGS...)>适用于 GCC 而不是 MSVC2013,为什么?
- C++11 cmath 函数不在 std 命名空间中,适用于 android NDK w/gcc-4.8 或 clang