1、堆 heap
make_heap(v.begin(),v.end()) 构造堆 默认大根堆
make_heap(v.begin(),v.end(),greater<int>()) 构造小根堆
放入一个元素到堆中,使其依然是一个堆
v.push_back()
push_heap(v.begin(),v.end(),greater<int>())
pop_heap 出堆 将堆顶的元素移除
pop_heap(v.begin(),v.end(),greater<int>())
v.pop_back()
sort_heap(v.begin(),v.end(),greater<int>()) 将容器元素从大到小排序,破坏堆结构
2、adapter 适配器 本质是自定义的方法
reverse_iterator 逆向迭代器 反向迭代器方向的迭代适配器
reverse_iterator< vector<int>::iterator > rit(v.end())
cout<< *rit << endl;
++rit;
front_insert_iterator 前插迭代器 以迭代器的使用方式实现,在容器开头插入元素
deque<int> d={1,2,3} 因为vector 没有push_front 所以不能用vector
front_insert_iterator< deque<int> > fit(d);
*fit =11; 头部插入 元素11
back_insert_iterator 后插迭代器 以迭代器的使用方式实现,在容器末尾位置插入元素
insert_iterator 插入迭代器 以迭代器使用方式实现,在容器的某位置插入元素
insert_iterator< vector<int> > fit(v,v.begin()+2)
*fit=11 在第二个位置插入11
istream_iterator 输入流迭代器 以迭代器的使用方式实现 cin>> 的功能
istream_iterator<int> itEnd;
istream_iterator<int> it(std::cin); 以空格键区分元素
int num1 = *it;
++it;
int num2 = *it;
ostream_iterator 输出流迭代器 以迭代器的使用方式实现 cout<< 的功能
3、萃取:iterator_traits
vector<int>::iterator::value_type
vector<int>::iterator::iterator_category
vector<int>::iterator::pointer
vector<int>::iterator::difference_type
vector<int>::iterator::reference
4、type_traits
is_void<void>::value 判断是否是 void
is_void<int>::value 判断int 是否为void类型
is_void<void *>::value 判断vlid * 是否是void类型
is_pointer<int *>::value 判断 int * 是否是指针类型
is_function<decltype(fun)>::value 是否是函数类型
is_array<int[3]>::value 是否是数组
is_base_of<a,b>::value a是否是b的基类
is_object<int>::value 是否是类
5、空间配置器 allocator
allocator<int> allo; 定义空间配置器
int *p = allo.allocate(1); 定义1个空间
allo.contstruct(p,1); 给空间赋初值 1
cout << *p << endl; 使用
allo.address(*p); 获取地址
allo.deallocator(p,1); 回收值为1的空间
allo.destroy(p)