模拟实现std:map:clear
时间: 2023-08-05 07:43:02 浏览: 155
C++ 11 std::function和std::bind使用详解
好的,以下是模拟实现std::map::clear的示例代码:
```c++
template<typename Key, typename Value>
class Map {
private:
struct Node {
Key key;
Value value;
Node* left;
Node* right;
Node(Key key, Value value) : key(key), value(value), left(nullptr), right(nullptr) {}
};
Node* root;
public:
Map() : root(nullptr) {}
void clearHelper(Node* node) {
if (node == nullptr) {
return;
}
clearHelper(node->left);
clearHelper(node->right);
delete node;
}
void clear() {
clearHelper(root);
root = nullptr;
}
};
```
这里我们定义了一个Map类,并在其中定义了一个Node结构体表示每个键值对的节点。clearHelper是一个递归函数,用于遍历整个树并删除每个节点,最后将根节点设为nullptr。在clear函数中,我们将根节点传递给clearHelper开始清空整个树。
阅读全文