请你说说set 的实现原理?
set 底层使用红黑树实现,一种高效的平衡检索二叉树。 set 容器中每一个元素就是二叉树的每一个节点,对于 set 容器的插入删除操作,效率都比较高,原因是二叉树的删除插入元素并不需要进行内存拷贝和内存移动,只是改变了指针的指向。 对 set 进行插入删除操作 都不会引起迭代器的失效,因为迭代器相当于一个指针指向每一个二叉树的节点,对 set的插入删除并不会改变原有内存中的节点。 set 中的元素都是唯一的,而且默认情况下会对元素进行升序排列。不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,再插入新元素。不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取。
参考文献:
https://blog.csdn.net/qq_21989927/article/details/108063613
https://www.nowcoder.com/questionTerminal/7a96c8f34a40476aa3e2f4ccc30242d2?orderByHotValue=0&mutiTagIds=569&page=1&onlyReference=false
免责声明:
本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。