STL
STL包括vector(不定数组)、set(集合)、string(字符串)、map(字典)、全排列next_permutation
vector
vector是一个不定长度的数组,所谓不定长度,就是我们往里扔多少元素,他就有多大,他的访问跟我们原先使用的数组也一样.
vector <int > ve;//定义一个int型数组ve
ve. erase (ve. begin ()+1); //删除的是第一个元素(下标从0开始)
ve. insert (ve. begin ()+1 ,1); //把删除的再加进去
ve. erase (ve. begin ()+1 , ve. begin ()+4); //删除的第1,2,3 的元素共三个元素
cout <<ve. size ()<< endl ;//看一下数组的大小
ve. clear (); //清空数组
set
set即是一个集合,这个集合不允许相同的元素存在,所
以set中的元素是唯一的
例如:我们把2,3,4,7,4都扔进set里,那么set里面就会
有2,3,4,7这四个元素
set <int > st;//定义一个int型set
st. insert () //在集合中插入元素
st. begin () //返回指向第一个元素的迭代器
st. end () //返回指向最后一个元素之后的迭代器,不是最后一个元素
st. clear () //清除所有元素
st. count () //返回bool型,有返回1,无返回0
st. empty () //如果集合为空,返回true
st. erase () //删除集合中的元素
st. find () //返回一个指向被查找到元素的迭代器,如果没找到则返回end()
st. size () //集合中元素的数目
string
string是一个很方便使用的字符串,跟vector差不多,不定长
度
string s = " hello ";//定义一个字符串s并初始化
s += "is dog"; //在s的后面加上这一串字符,但不能-
cout <<s<< endl ; //输出s
//string也可以用> < ==来进行字典序的比较,返回0 or 1
s. clear (); //清空s
cin >>s; //cin输入
map
map即是一个字典,是一种映射即对应关系,map的使用很
方便
例如:我们们个人的学号对应自己的名字,就可以用map来
存
map < string ,ll > mp;//定义一个名为mp的map, 前面的string是它的key,后者是value
mp[" clody_happy "] = 311709000429 //cloudyhappy对应3117的映射
mp. clear (); //清空mp
cout <<mp. size (); //mp的大小
mp. empty (); //判断mp是否为空
mp. count ( key ); //判断key是否存在
全排列
char s [10] = "012 ";
//按字典序输出012的全排列
do{
printf ("%s\n",s);
} while ( next_permutation (s,s + 3));
//prevpermutation的使用同理
栈和队列
栈和队列是一种特殊的线性表,其区别在于栈是先进后出像
一个瓶子,而队列是先进先出像排队
stark
stack <int > s;//定义一个int型栈s
s. push (2); //把2从栈顶压入栈
s.top (); //栈顶元素
s.pop (); //弹出栈顶元素
s. empty (); //判断栈是否为空
s. size (); //栈的大小
queue
queue <int > q;//定义一个int型队列q
q. push (1); //把1推入队列
q. front (); //队首元素
q.pop (); //弹出队首元素
q. empty (); //判断队是否为空
q. size (); //队列的大小