草庐IT

heaps-algorithm

全部标签

c++ - 从 std::heap 中间移除一个元素

我正在使用优先级队列作为调度程序,但有一个额外的要求。我需要能够取消预定的项目。这相当于从优先级队列的中间移除一个项目。我不能使用std::priority_queue因为对除top之外的任何元素的访问是protected。我正在尝试使用algorithm的堆函数。但我仍然缺少我需要的那block。当我从堆中间删除一个元素时,我希望它能够有效地重建自己。C++提供了这些堆函数:std::make_heapO(3n)std::push_heapO(lg(n))std::pop_heapO(2lg(n))我想要一个像std::repair_heap这样的新函数,带有一个big-O3n。我会

c++ - 有 C++ MinMax Heap 实现吗?

我正在寻找类似STL中的算法(push_heap、pop_heap、make_heap),除了能够同时弹出有效的最小值和最大值。AKA双端优先级队列。如所述here.双端优先级队列的任何干净实现也可以作为替代方案,但是这个问题主要是关于MinMaxHeap实现。我的google-fu没有结果,但肯定存在吧? 最佳答案 您是否有不能使用std::set的原因?听起来像这样,加上一些包装器来访问和删除set::begin()和--set::end()将解决问题。我想很难找到通常比set的默认实现更快地执行MinMaxHeap的东西。

c++ - boost:algorithm::join() 可以连接一个 float 容器吗?

Boost连接可用于连接字符串容器,可选地由分隔符字符串分隔,如下例所示:Agoodexampleforboost::algorithm::join我的STL技能很弱。我想知道是否有任何方法可以对数字容器(float、double、整数)使用相同的函数?似乎应该有一些一两行来适应其他类型。还有STL的复制功能,这里有一个很好的例子:Howtoprintoutthecontentsofavector?但我不喜欢它在每个元素之后添加分隔符字符串的方式。我只想使用boost。 最佳答案 当然,您可以结合boost::algorithm::

algorithm - 如何在 C++ (STL) 中否定仿函数?

我有一些函数可以找到一个值:structFindPredicate{FindPredicate(constSomeType&t):_t(t){}booloperator()(SomeType&t){returnt==_t;}private:constSomeType&_t;};boolContainsValue(std::vector&v,SomeType&valueToFind){returnfind_if(v.begin(),v.end(),FindPredicate(valueToFind))!=v.end();}现在我想编写一个函数来检查vector的所有成员是否满足该谓词:b

c++ - 警告 C4316 : object allocated on the heap may not be aligned 16

重要信息:开发操作系统:Windows8.164位目标操作系统:Windows8.164位IDE:VisualStudio2013专业版语言:C++问题:通过IDE编译我的静态库项目时收到以下警告:warningC4316:...:objectallocatedontheheapmaynotbealigned16我可以简单地忽略此警告...但我假设它的存在是有原因的,并且希望至少了解它的含义以及它对future可能产生的影响。我认为这行代码与问题有关,在我的Win32窗口包装类中调用:m_direct3D=newDirect3D(this);m_direct3D是一个指向我的Direc

algorithm - 在 Python 中检查两个字符串是否是彼此的排列

我正在检查两个字符串a和b是否是彼此的排列,我想知道在Python中执行此操作的理想方法是什么。来自Python之禅,“应该有一种——最好只有一种——显而易见的方法”,但我认为至少有两种方法:sorted(a)==sorted(b)和all(a.count(char)==b.count(char)forcharina)但是当(例如)a的第一个字符在b中不存在时,第一个比较慢,而当它们实际上是排列时,第二个比较慢。有没有更好的方法(在更Pythonic的意义上,或者在平均更快的意义上)?或者我应该根据我预计最常见的情况从这两个中进行选择? 最佳答案

algorithm - 如何有效地获取列表中较大的 k 个元素?

解决这个问题的最有效、最优雅和Pythonic的方法是什么?给定一个包含n个元素的列表(或集合或其他),我们想要获得最大的k个元素。(你可以假设k不失一般性,我猜)例如,如果列表是:l=[9,1,6,4,2,8,3,7,5]n=9,假设k=3。检索3个最大的最有效的算法是什么?在这种情况下,我们应该得到[9,8,7],没有特别的顺序。谢谢!曼努埃尔 最佳答案 使用heapq模块中的nlargestfromheapqimportnlargestlst=[9,1,6,4,2,8,3,7,5]nlargest(3,lst)#Gives[9

java - 了解 JVM 内存分配和 Java 内存不足 : Heap Space

我正在研究如何真正了解JVM中的内存分配是如何工作的。我正在编写一个内存不足的应用程序:堆空间异常。我知道我可以传入VM参数(例如Xms和Xmx)来增加JVM为正在运行的进程分配的堆空间。这是问题的一种可能解决方案,或者我可以检查我的代码是否存在内存泄漏并在那里解决问题。我的问题是:1)JVM实际上是如何为自己分配内存的?这与操作系统如何将可用内存传递给JVM有什么关系?或者更一般地说,任何进程的内存分配实际上是如何工作的?2)虚拟内存是如何发挥作用的?假设您有一个具有32GB物理内存的系统,并且您将所有32GB分配给您的Java进程。假设您的进程实际上消耗了所有32GB内存,我们如何

java - 内存不足错误 : Java heap memory on Android Studio

在编译我的Android项目时如何修复java.lang.OutOfMemoryError:Javaheapspace?我在升级到AndroidStudio版本1后得到这个。但是,我不认为这是问题所在。最有可能在我开始将我的应用程序升级到SDK21时(之前是SDK20)。但我也不太确定。我搜索了somefix,但找不到一个有效的。大多数修复都是针对EclipseIDE的。这是我在编译时得到的完整logcat错误:warning:IgnoringInnerClassesattributeforananonymousinnerclass(net.lingala.zip4j.unzip.Un

java - 为什么我收到消息 : "Unhandled event loop exception Java heap space" in Eclipse when using javascript autocomplete?

当我尝试使用任何javascript模板时,Eclipse总是挂起,我收到以下消息:弹出“未处理的事件循环异常Java堆空间”。我为Eclipse进程和Java进程启动了一个top命令(使用Ubuntu),然后尝试在Eclipse上使用自动完成。我注意到Java进程将我的CPU占用到100%,而内存保持不变(大约22%)。我没有对我的EclipseIDE进行任何更改就得到了这个...关于如何解决这个问题的任何想法?编辑:我还注意到,在首选项窗口下:Javascript/内容辅助/高级选中“其他Javascript提案”选项。取消选中后,问题就解决了。但是,它缺乏对变量和对象的内容辅助。