c++ - 带有 std::unique_ptr 的二叉树

标签 c++ c++11

我实际上使用的是 std::unique_ptr为了创建二叉树。

事实上,我使用了一种算法 tour,它从距离矩阵计算出最短路径! 在我的算法中,我发现自己面临着 std::move() 的问题。与 std::unique_ptr .

我的树已经建好,但只建在根节点上,不“做分支”。

这里是我遇到问题的代码:

node = std::move(node.get()->addChild());

函数addChild返回 new child (= std::unique_ptr<Node>) 的引用.

我真的需要“改变”节点来完成我的算法。那么,我该如何解决呢?

最佳答案

更改 addChild 以按值返回新节点的 unique_ptr 而不是返回引用。结果将是一个右值,无需使用 std::move 进行强制转换。在您当前的代码中,您将左值引用传递给 std::move 这导致它仍然是左值引用并尝试调用复制构造函数而不是 std::unique_ptr 的移动构造函数

关于c++ - 带有 std::unique_ptr 的二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219003/

相关文章:

c++ - 我可以知道哪些 C++ 编译器(在线/免费)支持 c++0x 中的 "inheriting constructors"功能吗

c++ - 如何根据我提供的参数创建动态 make?

c++ - 多线程应用程序概念

c++ - 如何在 CMake 中设置编译标志?

c++ - 如何定义转换运算符以允许内置运算符 += 用于添加两个类

c++ - 为什么这个获取和释放内存栅栏没有给出一致的值?

c++ - 如何使用宏打印可变数量的参数?

c++ - 将重物插入 std::map

c++ - 为什么 C++ 标准使正则表达式算法成为自由函数?

c++ - 函数模板调用中的<未解析的重载函数类型>