gpt4 book ai didi

c++ - 在 C++ 中使用 const 表示 std::pair

转载 作者:行者123 更新时间:2023-12-01 15:10:22 25 4
gpt4 key购买 nike

为了实现二叉搜索树,我在想为什么我们在 std::pair 中将 Const 放在 K 之前?

template<class K,class V>
class BST {
public:
class Node {
public:
pair<const K, V> data; // pair < data_type1, data_type2 > Pair_name;
unique_ptr<Node> left; // Create a unique_ptr object through raw pointer
unique_ptr<Node> right;
unique_ptr<Node> parent;

Node(const K& k, const V& v): //constructor
data{std::move(k),std::move(v)}, right(nullptr),left(nullptr),parent(nullptr)
{
}
~Node() noexcept = default;

最佳答案

因为,从逻辑上讲,数据结构中的节点键必须是不可变的:不受更改的影响。那是为了保持正确的结构布局,这取决于节点的相对顺序(按键!)。
如果需要重命名节点,则需要部署更高级别的算法才能做到这一点。
当然,您的代码段中没有任何代码甚至会尝试修改 key ——为什么会有呢?它不会编译! — 但是把 const如果有人忘记并尝试这样做,则会在编译时强制执行。因此,这与 const 的任何其他用法的原因相同。 : 执行不变性。std::map容器还存储 std::pair<const K, V> , 出于同样的原因。

关于c++ - 在 C++ 中使用 const 表示 std::pair,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63033795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com