c++库中 的 priority_queue 构建 小根堆 10C

c++库中 的 priority_queue 构建 小根堆 后 ,top函数 返回的是 const对象。。。怎么变成非const对象
无法从“const HuffmanNode”转换为“HuffmanNode”

2个回答

强制转换下就可以。不过你不要试图去修改它的成员。

qq_35677321
飘逸的石头 回复caozhy: 貌似好了 谢谢啦
2 年多之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 回复飘逸的石头: 强制转换下
2 年多之前 回复
qq_35677321
飘逸的石头 “const_cast”: 无法从“const HuffmanNode<char>”转换为“HuffmanNode<char>"
2 年多之前 回复
qq_35677321
飘逸的石头 temp.leftPointer = &const_cast<HuffmanNode<char>>(Huffman.top());我改成这样 也不行 const_cast能这么用么
2 年多之前 回复
qq_35677321
飘逸的石头 temp.leftPointer = &Huffman.top();
2 年多之前 回复
qq_35677321
飘逸的石头 std::priority_queue < HuffmanNode<char>, std::vector<HuffmanNode<char>>, compare> Huffman;
2 年多之前 回复

为啥会有这个需求?top 返回堆顶元素,当然是只读的,因为万一你改了它,它就可能不是最大/最小的了。
如果你想改,可以用 pop 把它弹出来,改完后再放进去,至于放进去还是不是最大/最小,就让它自己判断。
或者你不想改,只是想读一下,那你完全可以赋值给任何一个变量啊。
返回 const_reference 唯一的影响就是你不能够用个非 const 指针/引用来指着它而已。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问