不同于Hashmap的无序特性,BST(Binary Search Tree)按照key排序,C++里面的BST实现是stl_tree,其基于BST的变种-红黑树。std::map基于stl_tree来实现,所以了解stl_tree的实现细节有助于帮助我们理解标准库的实现,在平时的开发中更有把握与底气。本文介绍stl_tree的以下几个实现细节,并辅助代码、图文,希望对大家的工作及学习有所帮助。
1、stl_tree中的node结构是什么样的、怎么提取key与value?
2、比较器对象该如何实现?
3、怎么保证key唯一?
4、迭代器的结构、遍历顺序、自增与自减操作是怎么实现的?
先看一张stl_tree内部结构图。
原文链接:聊聊C++ stl_tree