憨八龟_ 2020-05-13 10:04 采纳率: 100%
浏览 1200
已采纳

c++有时候不能调用max函数

环境 vs2019community

头文件导入

#include <iostream>
#include <algorithm>
#include <stack>

int largestRectangleArea(vector<int>& heights) {
    stack<int> s;
    int max_s = 0;
    s.push(-1);
    for (int i = 0; i < heights.size(); ++i)
    {
        while (s.top() != -1 && heights[s.top()] >= heights[i]) {
            int h = heights[s.top()];
            s.pop();

                        //这里用max不报错
            max_s = max(max_s, h * (i - s.top() - 1));

        }
        s.push(i);
    }
    while (s.top() != -1) {
        int h = heights[s.top()];
        s.pop();

                //这个地方用max就报错
        max_s = max(max_s , h * (heights.size() - s.top() - 1));

    }
    return max_s;
}

vs上报错显示
严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) E0304 没有与参数列表匹配的 重载函数 "max" 实例 Project1 E:\source\repos\Project1\main.cpp 23

可是我明明导入了头文件啊,而且第一个max用的也没问题

  • 写回答

1条回答 默认 最新

  • 胖狗子修行之路 2020-05-13 10:26
    关注
    报错为:no matching function for call to ‘max(int&, std::vector<int>::size_type)’
    原因:h * (heights.size() - s.top() - 1) 被判断为std::vector<int>::size_type类型,不能隐式转换成int类型,而max需要两个参数都是int类型,所以报错了
    改成下面这样: 
            int tmp = h * (heights.size() - s.top() - 1);
            max_s = max(max_s , tmp);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 对于这个复杂问题的解释说明
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败