易混点:1.set和multiset:set不允元素重复而multiset允许元素重复,set和multiset会将元素自动排序(升序)。
2.map和multimap:map不允元素重复而multimap允许元素重复,map和multimap也会将元素自动排序。
重点:1.栈:先进后出,只有一个出口,只能操作最顶端的元素。
2.队列:先进先出,从底端加入元素,从顶端取出元素。
3.sort:sort排序默认为从大到小排序,若数组中有相同元素也是可以排列的,sort(a,a+k),排列的范围为a[0]到a[k-1].
4.bool next_permutation(begin,end);改变区间内元素,产生下一个排列。
bool prev_permutationg(begin,end);产生前一个排列。 多次使用这两个函数可以求出全排列。
5.upper_bound(begin,end,value)返回>value的元素的第一个位置。
lower_bound(begin,end,value);返回>=value的元素的第一个位置。 如果所有的元素都比value小那么就返回尾部end,返回的是位置而不是值。
6.set,multiset,map,multimap这四种容器是有序的,按照顺序进行存储。
用法:栈:
empty() 堆栈为空则返回真
pop() 移除栈顶元素
push() 在栈顶增加元素
size() 返回栈中元素数目
top() 返回栈顶元素
队列:
queue入队,如例:q.push(x); 将x 接到队列的末端。
queue出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问queue队首元素,如例:q.front(),即最早被压入队列的元素。
访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。
判断queue队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()
set:
begin() ,返回set容器的第一个元素
end() ,返回set容器的最后一个元素
clear() ,删除set容器中的所有的元素
empty() ,判断set容器是否为空
max_size() ,返回set容器可能包含的元素最大个数
size() ,返回当前set容器中的元素个数
rbegin ,返回的值和end()相同
rend() ,返回的值和rbegin()相同
map:
empty() ,判断set容器是否为空
count(key)返回键值等于key的元素的个数
insert(pos,elem)在pos位置插入一个elem
感受:学习了stl之后,做题的时候可以简便很多,比如排序的时候可以用sort函数直接排序,不用写排序代码,在很多时候用stl写程序既省时又省力。