Set原型
1 | template <class Key, |
set是用红黑二叉树实现的不可存在重复元素Key的容器,默认采用Compare规则进行排序。可以快速插入和删除元素,插入删除相当于在二叉树上增加删除节点,删除节点不会返回set的iterator。
用一段代码来实现set的自定义排序,以及删除一个节点后,iterator的效果。
1 |
|
结论
- iterator是一个泛型指针,但并不是指针。指针是一个存放有另外一个变量的地址的特殊变量,而iterator是一个对象,只是参照了指针的++,–,和修改所指变量内容的特征进行设计的专门用于指向STL容器的对象。
- set删除掉一个元素后,指向那个元素的迭代器并没有消失,可以想象成指针指向的空间并没有发生改变,只是二叉树的链接发生了改变。
- 但是删掉这个元素后,这个元素迭代器的下一个是什么元素并不确定,并不按照原来的排序进行。