使用可选<unique_ptr<节点>>

  • 本文关键字:ptr 节点 unique c++ c++17
  • 更新时间 :
  • 英文 :


我真的很喜欢使用类似的代码风格

class Node {
public:
std::optional<std::unique_ptr<Node>> left;
std::optional<std::unique_ptr<Node>> right;
Key key;
Val val;
};

与使用malloc/delete和nullptr检查的C风格树相比,性能如何?会有什么演出受到影响吗?

使用std::optional<std::unique_ptr<Node>>会导致一些空间损失,并可能在运行时进行额外的布尔检查。

但是CCD_ 2具有";"非所有";状态,在这种情况下;包含";nullptr,其应当足以表示无值状态。

class Node {
public:
std::unique_ptr<Node> left;
std::unique_ptr<Node> right;
Key key;
Val val;
};

甚至有一个方便的operator bool()来检查是否有相关的值。

与原始指针解决方案相比,上面的代码在编译时应该没有性能损失。