在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
set特点:
set的各成员函数列表如下: 1.begin()--返回指向第一个元素的迭代器 // 如果当前容器是空的,就不能解引用(Dereferenced)返回的迭代器值。 2. clear()--清除所有元素 3. count()--返回某个值元素的个数 // set.count(x)--返回x元素的个数,注意:由于set内元素不能重复,所以此处count的结果只能是0(没有)或者1(有且仅有一个) 4. empty()--如果集合为空,返回true //用迭代器之前需要验证是否为空 5. end()--返回指向最后一个元素的迭代器 6. equal_range()--返回集合中与给定值相等的上下限的两个迭代器 7. erase()--删除集合中的元素 8. find()--返回一个指向被查找到元素的迭代器 // set.find(x)--返回x元素的迭代器,即该节点的指针;没找到返回set.end() 9. get_allocator()--返回集合的分配器 10. insert()--在集合中插入元素 // 还有一个与之类似的函数:emplace. 之间的区别:添加新元素的时候调用的构造函数不同。 11. lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器 12. key_comp()--返回一个用于元素间值比较的函数 13. max_size()--返回集合能容纳的元素的最大限值 14. rbegin()--返回指向集合中最后一个元素的反向迭代器 15. rend()--返回指向集合中第一个元素的反向迭代器 16. size()--集合中元素的数目 17. swap()--交换两个集合变量 18. upper_bound()--返回大于某个值元素的迭代器 19. value_comp()--返回一个用于比较元素间的值的函数
和vector、list不同,set、map都是关联式容器。set内部是基于红黑树实现的。插入和删除操作效率较高,因为只需要修改相关指针而不用进行数据的移动。 在进行数据删除操作后,迭代器会不会失效呢?删除set的数据时,实际的操作是删除红黑树中的一个节点,然后相关指针做相关调整。指向其他元素的迭代器还是指向原位置,并没有改变,所以删除一个节点后其他迭代器不会失效。list和map也是同样的道理。然而删除vector中的某个元素,vector中其他迭代器会失效,因为vector是基于数组的,删除一个元素后,后面的元素会往前移动,所以指向后面元素的迭代器会失效。 再稍微说一下迭代器的实现。迭代器是一个对象,vector的迭代器是封装了数组下标;list、map、set的迭代器是封装了元素节点的指针。
参考文章: http://classfoo.com/ccby/article/w2pUE https://blog.csdn.net/u010902721/article/details/45771597 https://www.cnblogs.com/omelet/p/6627667.html https://blog.csdn.net/qq826647235/article/details/53741372
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论