3.6号stl学习总结
-----数学4班杜鑫
Stl包括(栈、队列、vector、sort、生成排列、set、multiset、map、multimap、优先队列)
一.栈(stack) (先进后出)
头文件: #include <stack>
定义:stack<data_type> stack_name;
如:stack <int> s;
操作:
empty() ----- 返回bool型,表示栈内是否为空 (s.empty() )
size() ----- 返回栈内元素个数 (s.size() )
top() ----- 返回栈顶元素值 (s.top() )
pop() ----- 移除栈顶元素(s.pop(); )
push(data_type a) ----- 向栈压入一个元素 a(s.push(a); )
二.队列(queue) (先进先出)
头文件:#include<algorithm>
比栈多:
front() ----- 返回queue内的下一个元素 (q.front() )
back() ----- 返回queue内的最后一个元素(q.back() )
其余同上;
三.vector (动态数组)
push_back(data_type a) //将元素a插入最尾端
pop_back() //将最尾端元素删除
v[i] //类似数组取第i个位置的元素(v[0] )
四.sort (排序)
sort(begin, end);
sort(begin, end, cmp);
默认为从小到大排序;
Cmp 可以自定义一个bool函数实现自定义排序
例如:从大到小排序:
bool cmp(int a, int b)
{
return a > b;
}
五.生成排序
头文件: #include <algorithm>
bool next_permutation(begin, end); //改变区间内元素的顺序,产生下一个排列。
bool prev_permutation(begin, end); //产生前一个排列。 end为最后一个元素的下一个位置。
upper_bound 和 lower_bound:
upper_bound(begin, end, value); //返回>value的元素的第一个位置。
lower_bound(begin, end, value); //返回>=value的元素的第一个位置。
num[] = {1,2,2,3,4,5};
lower_bound(num, num + 6, 2)为num + 1
upper_bound(num, num + 6, 2)为num + 3