草庐IT

列优先

全部标签

c++ - C++中的转换优先级

我有以下代码:Somefunctions:A::A(inti_a){cout在主函数中:h(1);h(1)调用的函数是f1。我的问题是它为什么选择调用它。1是一个int,因此需要隐式转换为double。它可以很容易地将int转换为A使用上面定义的转换构造函数。为什么我没有得到错误?什么是类型转换的优先规则?注意我已经在上面发布了我认为回答问题所必需的代码,但在下面我发布了整个代码:#includeusingnamespacestd;classB;classA{public:explicitA(constB&){coutint\n";return2;}};classB{public:op

c++ - 从 STL 优先级队列创建最小堆

我正在从STL优先级队列创建一个最小堆。这是我正在使用的类(class)。classPlane{private:intid;intfuel;public:Plane():id(0),fuel(0){}Plane(constint_id,constint_fuel):id(_id),fuel(_fuel){}booloperator>(constPlane&obj){return(this->fuel>obj.fuel?true:false);}};在main中,我因此实例化了一个对象。priority_queue,Plane>pq1;pq1.push(newPlane(0,0));我从

c++ - 为什么我们需要Prim算法中的优先级队列

正如我的问题所说,我想知道为什么我们在Prim'sAlgorithm中使用优先级队列?它如何避免我们使用天真的方式(是的,我听说过,但不知道为什么)。如果有人能逐步解释邻接表,我将非常高兴。我正在使用Cormen的书。伪代码:Prim(G,w,r)//whatisw(weight?)andr?ForeachuinV[G]dokey[u]←∞//whatiskey?π[u]←NILkey[r]←0Q←V[G]WhileQ≠Ødou←EXTRACT-MIN(Q)foreachvinAdj[u]ifvisinQandw(u,v)我正在考虑使用std::vector然后std::make_he

c++ - 我如何强制 boost::asio 优先完成 async_write 调用而不是运行其他处理程序?

我正在使用boost::asio(不经意的传输方案)实现一组简单的协议(protocol)。这些在运行时受CPU限制。为了boost效率,我想尽量让两台主机都工作。如果主机A可以在执行两项任务之间做出选择,其中一项会让主机B开始计算,而另一项则不会,我希望主机A选择前者。目前,io_service在async_writes之前运行计算密集型处理程序。除非tcp窗口已满(或某些类似情况正在阻止向socker写入数据),否则完成async_write比运行其他处理程序几乎肯定更好。我看过asio的处理程序优先级队列示例。重新实现async_write以使用这样的优先级队列是解决我的问题的唯

c++ - 最小化广度优先搜索的内存使用

在下面的代码中,我通过广度优先搜索遍历一个图。代码在遍历时构建图形。这是一个非常大的图,扇形为12。因此,每当广度优先搜索的深度增加时,我想破坏它上面的层以尽量减少内存用法。我该如何设计算法来做到这一点?stringNode::bfs(Node*rootNode){QQueueq;q.enqueue(rootNode);while(!(q.empty())){Node*currNode=q.dequeue();currNode->constructChildren();foreach(Node*child,currNode->getListOfChildren()){q.enqueue

c++ - 修改对内部数据的引用时更新 STL 优先级队列

假设我正在写Dijkstra'sAlgorithm,我有一个优先级队列,将最短距离节点保持在顶部。但是,当我遍历图形时,我将更新到该顶点的距离。我已经放置了对数据结构中包含的优先级队列中所有顶点的引用。现在,当我更新数据结构中的顶点时,我希望优先级队列中的数据能够适应这些变化,因此最近的节点总是在最前面。但是,在使用调试器单步执行我的应用程序后,我注意到优先级队列不会自行更新。我如何让它做到这一点,而不将所有顶点重新插入其中? 最佳答案 STLpriority_queue假设你只使用push()和pop()方法来修改数据结构。它不跟

c++ - 隐式转换运算符 vs 模板构造函数——应该优先考虑谁?

考虑以下代码片段:templatestructdependent_false{staticconstexprautovalue=false;};structfoo{foo(){}templatefoo(constT&){static_assert(dependent_false::value,"");}};structproxy{operatorfoo(){returnfoo{};}};intmain(){(void)foo{proxy{}};}使用-std=c++17编译时:clang++(trunk)成功编译代码;g++(trunk)编译代码失败-它实例化foo(constT&)。

C++ 转换运算符与构造函数优先级,编译器不同

我有2个非常简单的类,ClassA和ClassB。我希望能够从ClassB转换为ClassA。根据以下内容,使用SunC++5.11,它编译得很好并且运行完全符合我的预期:Conversionconstructorvs.conversionoperator:precedence.当我尝试使用gcc版本4.8.2编译它时,它给出了关于对重载函数的不明确调用的错误。当强制转换似乎是一种定义明确的行为时,为什么这种行为会有所不同?代码:主.cc#includeclassClassB;classClassA{public:ClassA(constint&num):_number(num){st

c++ - vs2005和vs2010模板函数的优先级不同

classFoo{friendclassSquirrelVM;public:Foo(){coutFoo(const_ty&val){coutFoo(_ty&val){coutFoo(_ty*val){coutvs2005和vs2010的输出不同。预期的输出是这样的..CtorconstCtorDtorDtor如果我在vs2005中构建,则会导出以上输出。但是,vs2010的输出与vs2005的不一样CtorTRefDtorDtor为什么vs2010中模板函数的优先级高于普通函数?[编辑]如果在复制构造函数上省略了const,则会出现比预期的输出(与vs2005相同)。如果复制构造函数的

ios - cocos2d 3.0如何优先处理触摸吞咽

由于CCTargetedTouchDelegate从cocos2d3.0开始被移除了,我想知道如何处理touchswallowing东西?我在Canvas节点(2.x中的层)顶部有一个小Sprite,需要将Sprite的优先级设置为高于Canvas。当用户在sprite边界框内触摸时,触摸被吞没,否则Canvas将响应它。 最佳答案 在cocos2d3.0中,触摸是按反向z顺序处理的。这意味着如果您的Sprite在Canvas节点之上呈现,它应该已经首先接收到触摸通知,并且有机会吞下它。但是,要接收和吞下Sprite的触摸,您应该遵