STL库:set和map的使用和原理

本文介绍了C++ STL中的关联容器set和map,它们基于红黑树实现,提供自动排序功能。set用于存储无重复的排序元素,不允许通过迭代器修改元素值。map则包含键值对,允许修改实值但不可更改键值,以保持有序性。文中还讲解了set和map的重要操作接口,并提供了使用示例。
摘要由CSDN通过智能技术生成

set和map是C++标准库中的关联容器,它们中的所有元素都会根据元素的键值(key)自动被排序,又由于红黑树(RB-tree)是一种平衡二叉搜索树,自动排序效果非常好,所以标准的STL中的set和map容器都是以红黑树(RB-tree)为底层机制,又由于map和set所开放的各种操作接口,RB-tree也提供了,所以它们几乎所有的操作行为,都只是转调RB-tree的操作行为。

set介绍:set是存储已排序的无重复的元素,它有过滤重复功能,它元素的键值(key)就是实值(value),实值就是键值,所以set的迭代器不能改变其元素值,否则会严重破坏其set有序的组织,所以其迭代器被定义为底层RB-tree的const_iterator,杜绝写入操作。

set源码:

template< class Key,
	      class Compare = less<Key>,  //缺省情况下采用递增排序
		  class Alloc = alloc>
class set;

set几个重要操作行为接口:

首先要了解接口各元素类型:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值