草庐IT

minmax-heap

全部标签

c++ - 我应该什么时候使用 make_heap 与优先队列?

我有一个要用来创建堆的vector。我不确定是否应该使用C++make_heap函数或将vector放入优先级队列?在性能方面哪个更好?我应该什么时候使用一个与另一个? 最佳答案 在性能方面没有区别。std::priority_queue只是一个适配器类,它将容器和与堆相关的相同函数调用包装到一个类中。std::priority_queue的规范公开声明。通过从暴露的std::vector构建heap并直接调用与堆相关的函数,您可以保持它对外部访问的可能性保持开放,这可能会损坏堆/队列的完整性。std::priority_queue

c++ - make_heap 的意义何在?

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

c++ - 有没有一种很好的方法可以将 std::minmax(a, b) 分配给 std::tie(a, b)?

std::tie(a,b)=std::minmax(a,b);我认为这是直观的代码。干净易懂。太糟糕了,它没有按预期工作,如std::minmaxconst&的模板.如果因此在std::pair中交换值一个分配将覆盖另一个值:auto[a,b]=std::make_pair(7,5);std::tie(a,b)=std::minmax(a,b);std::couta:5,b:5这里的预期输出是a:5,b:7.我认为这很重要,因为实现转换函数以将函数应用于某些范围需要直观lambda的此类语句。例如:std::vectorv{0,1,0,2,0};std::vectoru{1,0,1,0

java - “Error occurred during initialization of VM; Could not reserve enough space for object heap” 使用 -Xmx3G

首先,我有一个8gb内存的盒子,所以我怀疑总内存是问题所在。此应用程序在6GB或更少的机器上运行良好。我正在尝试在Eclipse的运行配置中的“VM参数”下使用-Xmx3G保留3GB的空间。每次我尝试保留超过1500mb时,我都会收到此错误:“虚拟机初始化过程中发生错误;无法为对象堆保留足够的空间”使用-Xmx3G这是怎么回事? 最佳答案 难道你在那台机器上使用的是32位jvm? 关于java-“ErroroccurredduringinitializationofVM;Couldnot

java - "on-heap"和 "off-heap"之间的区别

Ehcachetalksabout堆上和堆外内存。有什么区别?使用哪些JVM参数来配置它们? 最佳答案 堆上存储是指将出现在Java堆中的对象(也受GC影响)。另一方面,堆外存储是指由EHCache管理的(序列化)对象,但存储在堆外(也不受GC影响)。由于堆外存储继续在内存中进行管理,因此它比堆上存储稍慢,但仍比磁盘存储快。问题中发布的链接中涉及到堆外存储管理和使用的内部细节不是很明显,因此查看TerracottaBigMemory的详细信息是明智的。,用于管理磁盘外存储。BigMemory(堆外存储)用于避免GC在几兆字节或千兆字

c++ - 为什么两个不同的概念都称为 "heap"?

这个问题在这里已经有了答案:What'stherelationshipbetween"a"heapand"the"heap?(10个回答)关闭去年。为什么在C风格语言和thedatastructure中使用运行时堆进行动态内存分配两者都称为“堆”?有关系吗? 最佳答案 DonaldKnuth说(计算机编程的艺术,第三版,第1卷,第435页):Severalauthorsbeganabout1975tocallthepoolofavailablememorya"heap."他没有说是哪些作者,也没有给出任何具体论文的引用,但确实说“堆

java - 构建失败 java.lang.OutOfMemoryError : Java heap space

我在构建build.xml时遇到了这个问题。BUILDFAILEDjava.lang.OutOfMemoryError:Javaheapspaceatjava.util.Arrays.copyOf(Arrays.java:2786)atjava.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:94)atorg.codehaus.cargo.module.DefaultJarArchive.(DefaultJarArchive.java:75)atorg.codehaus.cargo.module.DefaultJarA

c++ - std::minmax() 和 std::tie 的重载

std::minmaxC++11中引入的函数应该分别返回一对给定值中的最小值和最大值。在这个例子中:inta=6,b=5;autop=std::minmax(a,b);std::cout这就像广告和打印一样工作p.first=5p.second=6现在我想有效地修改a和b来强制b低于a,就像运行这段代码一样:if(b>a)std::swap(a,b);所以我写了这个:inta=5,b=6;std::tie(b,a)=std::minmax(a,b);std::cout但是,这会打印:a=5b=5改用initializer_list重载,如下所示:std::tie(b,a)=std::m

c++ - std::minmax() 和 std::tie 的重载

std::minmaxC++11中引入的函数应该分别返回一对给定值中的最小值和最大值。在这个例子中:inta=6,b=5;autop=std::minmax(a,b);std::cout这就像广告和打印一样工作p.first=5p.second=6现在我想有效地修改a和b来强制b低于a,就像运行这段代码一样:if(b>a)std::swap(a,b);所以我写了这个:inta=5,b=6;std::tie(b,a)=std::minmax(a,b);std::cout但是,这会打印:a=5b=5改用initializer_list重载,如下所示:std::tie(b,a)=std::m

JAVA HEAP SPACE解决方法和JVM参数设置

JAVAHEAPSPACE解决方法和JVM参数设置JAVAHEAPSPACE解决方法和JVM参数设置原因分析设置异常分析Java堆的管理—垃圾回收提到一下几点,很不错,或许可以作为写程序时候的准则:jvm内存查看与分析工具JAVAHEAPSPACE解决方法和JVM参数设置在JVM中如果98%的时间是用于GC(GarbageCollection)且可用的Heapsize不足2%的时候将抛出异常信息,java.lang.OutOfMemoryError:Javaheapspace。所以产生这个异样的原因通常有两种:1.程序中出现了死循环2.程序占用内存太多,超过了JVM堆设置的最大值。原因分析第二