草庐IT

max-heap

全部标签

c++ - 在常量表达式中使用 numeric_limits::max()

我想在一个类中定义一个常量,它的值是最大可能的int。像这样的:classA{...staticconstintERROR_VALUE=std::numeric_limits::max();...}此声明无法编译并显示以下消息:numeric.cpp:8:error:'std::numeric_limits::max()'cannotappearinaconstant-expressionnumeric.cpp:8:error:afunctioncallcannotappearinaconstant-expression我明白为什么这不起作用,但有两件事在我看来很奇怪:在我看来,在常量

c++ - 如何便携地找出 min(INT_MAX, and(INT_MIN))?

我怎样才能便携地找出INT_MAX和abs(INT_MIN)中的最小值?(这是INT_MIN的数学绝对值,而不是对abs函数的调用。)它应该与大多数系统中的INT_MAX相同,但我正在寻找一种更便携的方式。 最佳答案 而典型值为INT_MIN为-2147483648,典型值为INT_MAX是2147483647,标准不保证。TL;DR:您要搜索的值是INT_MAX在符合要求的实现中。但是计算min(INT_MAX,abs(INT_MIN))不便携。INT_MIN的可能值和INT_MAXINT_MIN和INT_MAX由附件E(实现限制

c++ - 错误 : 'INT32_MAX' was not declared in this scope

我收到了错误error:'INT32_MAX'wasnotdeclaredinthisscope但是我已经收录了#include我正在使用命令在(g++(GCC)4.1.220080704(RedHat4.1.2-44)上编译它g++-m64-O3blah.cpp我需要做任何其他事情来编译它吗?还是有另一种C++方法来获取常量“INT32_MAX”?谢谢,如果有什么不清楚的地方请告诉我! 最佳答案 引自手册页,“只有在包含__STDC_LIMIT_MACROS之前定义时,C++实现才应定义这些宏”。那就试试吧:#define__ST

c++ - 为什么 std::max 返回错误的值?

这个问题在这里已经有了答案:Correctimplementationofmin(2个回答)关闭7年前。在CppCon2014的“GrilltheCommittee”session上,委员会成员WalterBrown提到,如果两个参数的值相等,std::max会返回错误的值。这被接受,没有评论,也没有详细说明。他这是什么意思?为什么返回哪个值很重要? 最佳答案 如果min和max只用在有序集合上,所有合理的定义都是等价的。然而,在实践中,min和max用于预排序集:在其中您可以有两个排序相同但不完全相同的元素的集合。例如,您可能正在

c++ - 为什么 std::string::max_size 不是编译时常量?

std::string提供了一个max_size()方法来确定它可以包含的最大元素数。然而,一般来说,要计算出字符串的最大长度,程序员必须创建一个(可能为空的)字符串对象。如果这个类不需要程序员提供任何信息,为什么max_size()不能作为编译时常量使用?字符串计算其最大大小是否需要某种运行时信息? 最佳答案 一个原因是max_size函数根本不是很有用,委员会认为尝试修复它不值得。所以它就保持原样,因为它是文档化界面的一部分。参见库缺陷报告#197:http://www.open-std.org/jtc1/sc22/wg21/d

c++ - std::numeric_limits::max 的语法错误

我的类结构定义如下:#includestructheapStatsFilters{heapStatsFilters(size_tminValue_=0,size_tmaxValue_=std::numeric_limits::max()){minMax[0]=minValue_;minMax[1]=maxValue_;}size_tminMax[2];};问题是我不能使用'std::numeric_limits::max()'并且编译器说:错误8错误C2059:语法错误:'::'Error7errorC2589:'(':'::'右侧的非法token我使用的编译器是VisualC++11

c++ - 警告 C4003 : not enough actual parameters for macro 'max' - Visual Studio 2010 C++

在VisualStudio2010SP1上编译openFrameworks007项目时出现以下警告:d:\pedro\development\videoflow\openframeworks\libs\openframeworks\types\ofcolor.h(127):warningC4003:notenoughactualparametersformacro'max'd:\pedro\development\videoflow\openframeworks\libs\openframeworks\types\ofcolor.h(128):warningC4003:notenoug

c++ - make_heap 的意义何在?

有人能告诉我像std::make_heap这样的STL堆函数模板的意义吗?为什么有人会使用它们?有实际用途吗? 最佳答案 算法和数据结构方面的类(class)会很好地回答您的直接问题。在计算机科学的算法中,堆被广泛使用。引用下面链接的make_heap函数,“堆是一棵树,其中每个节点都链接到不大于其自身值的值。”虽然堆有很多应用程序,但我最常使用的应用程序是当您想要有效地跟踪N值的排序列表时的搜索问题。当我第一次遇到STL堆函数时,我和你有类似的困惑。我的问题有点不同。我想知道“为什么STL堆与std::vector不在同一类数据结

c++ - 调用 std::max 时出现问题

我在VisualStudio中编译了我的Bison生成的文件并得到了这些错误:...\position.hh(83):errorC2589:'(':illegaltokenonrightsideof'::'...\position.hh(83):errorC2059:syntaxerror:'::'...\position.hh(83):errorC2589:'(':illegaltokenonrightsideof'::'...\position.hh(83):errorC2059:syntaxerror:'::'对应的代码是:inlinevoidcolumns(intcount=1

c++ - 警告 C4003 和错误 C2589 和 C2059:x = std::numeric_limits<int>::max();

此行在一个小型测试程序中正常工作,但在我想要它的程序中,我收到以下编译器投诉:#includex=std::numeric_limits::max();c:\...\x.cpp(192):warningC4003:notenoughactualparametersformacro'max'c:\...\x.cpp(192):errorC2589:'(':illegaltokenonrightsideof'::'c:\...\x.cpp(192):errorC2059:syntaxerror:'::'我得到了相同的结果:#includeusingnamespacestd;x=numeri