gpt4 book ai didi

c++ - 用于 RedBlackTree 实现的自定义 STL 类迭代器

转载 作者:行者123 更新时间:2023-11-28 03:58:18 25 4
gpt4 key购买 nike

我需要一个类似于 STL 的双向迭代器 (operator<, begin(), rbegin(), end(), rend()) 作为下面的内部类(我已经花了相当多的时间自己组装来自 J of Object Tech 中 C# 文章的工作树并将其翻译为 C++):

template<typename K, typename V> class rbtree {  
public:
rbtree(){
root = NULL;
numberElements = 0;
insertedNode = NULL;
nodeBeingDeleted = NULL; // Set in DeleteNode
siblingToRight = false; // Sibling of curNode
parentToRight = false; // Of grand parent
nodeToDeleteRed = false; // Color of deleted node
}
//...
private:
struct Node {
// Fields
K key; // Generic object held by each node
Node* left; Node* right; Node* parent; // Links to children and parent
bool red;// = true; // Color of node
// Constructor
Node(){
red = true;
}
Node(K key, Node* parent) {
this->key = key;
this->parent = parent;
left = NULL; right = NULL;
red = true;
}
};
// Fields
Node* root;
//...
};

最佳答案

您会惊讶地发现 std::set 是作为红黑树实现的。您自己写一个的原因是什么?

真正的答案:编写迭代器并非易事。您应该了解迭代器要求之间的常见差异。 This Stackoverflow question 是您问题的一种重复,并提供有用的提示。

关于c++ - 用于 RedBlackTree 实现的自定义 STL 类迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2358115/

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