关联式容器
什么是关联式容器:
关联式容器也是用来存储数据的,与序列式容器(vector, list, deque…)不同的是,关联式容器是通过key来存储和读取元素的,在数据检索时比序列式容器效率更高
键值对:
用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值, value表示与key对应的信息, 这类似于字典中的一一对应关系.
实现构造键值对pair(粗略的实现, 主要是看整体结构):
#pragma once
namespace sock {
template<class T1, class T2>
struct pair {
T1 first;
T2 second;
pair() : first(T1()), second(T2()) {
}
pair(const T1& f, const T2& s)
: first(f), second(s) {
}
};
}
树形关联式容器
树型结构的关联式 容器主要有四种:map、set、multimap、multiset。这四种容器的共同点是:使用平衡搜索树(即红黑树) 作为其底层结果,容器中的元素是一个有序的序列。
set:
set的特性:
1.set的底层是红黑树, 按照一定次序来存储
2.其元素为key, 不允许修改, 并且是唯一的
3.默认中序遍历二叉搜索树, 结果为升序
set的简单使用:
key的唯一性:
int main() {
set<int> s;
s.insert(9);
s.insert(5);
s.insert(2);
s.insert(5);
s.insert(7);
set<int>::iterator sit = s.begin();
while (sit != s.end()) {
cout << *sit << " ";
++sit;
}
cout << endl;
return 0;
}
移除key对应的结点:
int main() {
set<int> s;
s.insert(9);
s.insert(5);
s.insert(2);
s