STL
Posted lcezych
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL相关的知识,希望对你有一定的参考价值。
STL
使用模板的程序设计法
将一些常用的数据结构(比如链表,数组,二叉树)和算法(比如排序,查找)写成模板,以后则不论数据结构里放的是什么对象,算法针对什么样的对象,都不必重新实现数据结构,重新编写算法
标准模板库(STL)就是一些常用的数据结构和算法的模板的集合
容纳:可容纳各种数据类型的通用数据结构,是类模板
迭代器:可用于依次存取容器内元素
和指针类似,不同的是指针要定义
对数据结构进行封装,防止对其本身产生大的损坏
容器:
1.顺序容器
容器并非排序的,元素的插入位置同元素的值无关
vector,deque,list
vector动态数组,元素在内存连续存放,存取任何元素都能在常数时间完成
deque双向队列,元素在内存连续存放,存取任何元素都能在常数时间完成(次于vector)
list链表,不连续存放,存放常数时间
2.关联容器
元素是排序的,插入任何元素都按照相应的排序规则来确定位置,通常用红黑树实现
set(无重复元素),multiset(有),map,multimap
map<a,b>建立a->b的映射
map[a]=b
根据first值对元素从小到大排序,并根据first检索元素
顺序容器和关联容器都有的成员函数
begin
end
rbegin
rend
erase
clear
顺序容器中常用的成员函数
front
back
push_back
pop_back
erase
迭代器
用于指向顺序容器和关联容器中的元素
迭代器用法和指针类似
定义:
容器类名::iterator 变量名
迭代器++操作可以执行++操作,指向下一个元素
3.容器适配器
stack,queue,priority_queue
算法简介:
函数模板,大多数在
算法可以处理容器和数组
1.不变序列算法
2.变值算法
3.删除算法
4.变序算法
5.排序算法
6.有序区间算法
7.数值算法
next_permutation
for(int i = 1; i <= n; i ++) a[i] = i;
do
{
for(int i = 1; i <= n; i ++)
{
printf("%d ", a[i]);
}
}while(next_permutation(a + 1, a + 1 + n))
random_shuffle
以上是关于STL的主要内容,如果未能解决你的问题,请参考以下文章