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

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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 python读取速度问题
  • ¥15 stm32f407使用DMA问题
  • ¥15 您好 这个API接口该怎么弄 网站搭建好了 API也有 现在就不知道该怎么填写API 不知道怎么用
  • ¥88 用uniapp写一个多端的程序,用到高德地图,用高德的JSAPI吗?
  • ¥20 关于#c++#的问题:水果店管理系统
  • ¥30 dbLinq最新版linq sqlite
  • ¥20 对D盘进行分盘之前没有将visual studio2022卸载掉,现在该如何下载回来
  • ¥15 完成虚拟机环境配置,还有安装kettle
  • ¥15 2024年全国大学生数据分析大赛A题:直播带货与电商产品的大数据分析 问题5. 请设计一份优惠券的投放策略,需要考虑优惠券的数量、优惠券的金额、投放时间段和投放商品种类等因素。求具体的python代码
  • ¥15 有人会搭建生鲜配送自营+平台的管理系统吗