【C++】map/set

这篇文章主要是讲map、set的接口及应用,模拟实现在之后

--------

关联式容器

在之前,我们学过vector、list、deque,这些称之为序列式容器,因为其底层是线性的,里面存储的就是元素本身。

关联式容器的区别就在于,里面存储的不再是单独的一个元素,它存储的是键值对(key,value),在检索的时候效率会更高。

键值对

那什么是键值对?

可以这么理解,其本身是一个结构体,里面是这样的;

template <class T1, class T2>
struct pair
{
T1 first;
T2 second;
pair()
: first(T1())
, second(T2())
{}
pair(const T1& a, const T2& b)
: first(a)
, second(b)
{}
};

在里面有两个元素,这两个元素都是模板类型,里面第一个类型的T1,这个就是键值对里面的键(Key),而T2,就是Key对应的值(Value)。

我们在使用的时候,通过Key来找到对应的Value。

这里面提供了两个默认构造看看就好,不算难理解。

树形结构的关联式容

根据应用场景不同,有以下几种:

set

muitiset

map

multimap

set 

set - C++ Reference (cplusplus.com)

模板参数:

 

这里简单概括一下其内容;

set里面的内容是唯一的

放进去就不能被修改,但可以插入或者删除

set里面是排好序的(迭代器实现的是中序,打印出来是升序)

底层是二叉搜索树(红黑树)实现

跟map不同,map是<Key,Value>,set是<Value,Value>,Value就是对应的Key

查找效率是logN

 

 这里直接看它的接口:

构造

函数声明 功能介绍
set (const Compare& comp = Compare(), const Allocator&
= Allocator() );
构造空的set
set (InputIterator first, InputIterator last, const
Compare& comp = Compare(), const Allocator& =
Allocator() );
用[first, last)区
间中的元素构造
set
set ( const set<Key,Compare,Allocator>& x); set的拷贝构造

用的最多的应该是第一个,其次是第二个,拷贝构造不算多 

迭代器 

iterator begin()     返回set中起始位置元素的迭代器
<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值