STL第一阶段总结

STL的简单应用
1.栈:stack是一种先进后出(First In Last Out, FILO)的数据结构,它只有一个出口,只能操作最顶端元素。
头文件: #include
定义:stack<data_type> stack_name;
如:stack s;
2.队列:queue是一种先进先出(First In First Out, FIFO)的数据结构,从底端加入元素,从顶端取出元素。
头文件: #include
定义:queue <data_type> queue_name;
如:queue q;
3.动态数组:
头文件: #include
定义:vector <data_type> vector_name;
如:vector v;
三者在定义时格式一样。
4.sort排序
头文件: #include
sort(begin, end);
sort(begin, end, cmp);
运用:例如sort(a,a+5)
(a为数组首地址,5为数组元素个数)

 bool cmp(int a, int b){
		return a > b;
	}

cmp函数的定义
5.upper_bound 和 lower_bound
upper_bound(begin, end, value);
返回>value的元素的第一个位置。

lower_bound(begin, end, value);
返回>=value的元素的第一个位置。
6.set 和 multiset
set 和 multiset会根据特定的排序准则,自动将元素排序,两者的不同之处在于multiset可以允许元素重复而set不允许元素重复。
头文件: #include
定义:set <data_type> set_name;
如:set s;//默认由小到大排序

操作:
s.insert(elem) – 安插一个elem副本,返回新元素位置。
s.erase(elem) – 移除与elem元素相等的所有元素,返回被移除 的元素个数。
s.erase(pos) – 移除迭代器pos所指位置上的元素,无返回值。
s.clear() – 移除全部元素,将整个容器清空。

迭代器举例:
multiset :: iterator pos;
for(pos = s.begin(); pos != s.end(); pos++)
… …
s.size() – 返回容器大小。
s.empty() – 返回容器是否为空。
s.count(elem) – 返回元素值为elem的元素的个数。
s.lower_bound(elem) – 返回 元素值>= elem的第一个元素位置。
s.upper_bound(elem) – 返回元素值 > elem的第一个元素的位置。
以上位置均为一个迭代器。
s.begin() – 返回一个双向迭代器,指向第一个元素。
s.end() – 返回一个双向迭代器,指向最后一个元素的下y’x一 个位置
7.map和multimap 简单应用
头文件: #include
定义:map <data_type1, data_type2> map_name;
如:map <string, int> m;//默认按string由小到大排序
8.优先队列
一个拥有权值观念的queue,自动依照元素的权值排列,权值最高排在前面。
头文件: #include
定义:priority_queue <data_type> priority_queue_name;
如:priority_queue q;//默认是大顶堆

猜你喜欢

转载自blog.csdn.net/nihaibeizhanyong/article/details/88372520