STL(大量博客搜集整理,持续更新)

转:STL在ACM中的应用
STL 提供三种类型的组件:容器、迭代器和算法,它们都支持泛型程序设计标准。在ACM中充分利用STL可以大大的简化程序,提高解题效率。
1、容器主要有两类:顺序容器和关联容器。顺序容器(vector/list/deque/string)等是一系列元素的有序集合。关联容器(set/multiset/map/multimap)包含查找元素的键值。
2、迭代器的作用是遍历容器。
3、STL算法库包含四类算法:排序算法,不可变算法,变序算法和数值算法。

https://www.cnblogs.com/shanyr/p/5745807.html   

mark 非常好的总结

1.函数模板

template<class T>

//template 是关键字,T 表示一种待实例化的类型

//template<typename T> 也是对的

//函数定义模板

//类 模板

//类 模板
#include<iostream>
using namespace std;
//定义名为ex_class的类模板
template < typename T>  class ex_class
{
    T value;
public:
    ex_class(T v) { value=v; }
    void set_value(T v) { value=v; }
    T get_value(void) {return value;}
};
//main()函数中测试ex_class类模板
int main()
{
    //测试int类型数据
    ex_class <int> a(5),b(10);
   cout<<"a.value:"<<a.get_value()<<endl;
    cout<<"b.value:"<<b.get_value()<<endl;
    //测试char类型数据
    ex_class <char> ch('A');
    cout<<"ch.value:"<<ch.get_value()<<endl;
    ch.set_value('a');
    cout<<"ch.value:"<<ch.get_value()<<endl;
    //测试double类型数据
    ex_class <double> x(5.5);
    cout<<"x.value:"<<x.get_value()<<endl;
    x.set_value(7.5);
    cout<<"x.value:"<<x.get_value()<<endl;
}

很简便!!!!!!

2.stack 栈

成员函数介绍 

1.empty() 堆栈为空则返回真

2.pop() 移除栈顶元素

3.push() 在栈顶增加元素

4.size() 返回栈中元素数目

5.top() 返回栈顶元素 

3.vector

vector 基本操作

vector<int> v;

v.begin(); //容器的起始位置

v.end(); //容器最后一个位置后的位置

v.front();v.back(); //返回第一个元素(最后一个元素,但不判断时候存在

v.empty(); //返回是否容器为空

v.clear(); //清空容器

v.erase(m); //删除m位置的数据,并返回下一个数据的地址(m是迭代器)

v.erase(m,n); //删除m到n之间的数据,并返回下一个数据的地址

v2.assign(8,1); // 重新给vec2赋值,8个成员的初始值都为1 此操作之后vector变成新的size&value

v.push_back(element); //压入一个元素到末端

v.pop_back(); //弹出最后一个元素

v.reserve(100);v.resize(101); //resize已经创建空间如果再v.push_back()空间就会到101,而reserve只是预留空间并没有真正创建,v.push_back() 只是在第1位

v.size();v.capacity(); //size表示的是已经创建的空间大小也可以表示元素个数可用v[]的形式直接访问,

capacity容器容量,是预留空间并没有实际创建

swap(a,b); //交换两个元素的位置如:swap(v[0],v[1]);

vector<int> v(10); //创建一个前十个元素为int的容器

vector<string> v(10,string("I")); //使容器的前10个元素都为string型,并且都初始化为I

vector<string> v1(v2); //对于已经存在的v2创建一个v1副本 //这操作可以啊

v.insert(place,element); v.insert(place,n,element); //在place(迭代器)位插入n个元素

//注:对vector元素的访问可以用类似c语言的v[],但是最好用v.at(),它会检查是否越界更安全

v[0]; // A

v.at[0]; // B 这样越界的时候比较安全

这样搞下去会很慢的。。。。

不总结不总结了 看这篇就很好

队列补充:https://blog.csdn.net/c20182030/article/details/70171231

优先队列 :https://blog.csdn.net/c20182030/article/details/70757660

less是从大到小,greater是从小到大!!!!

回头把最近做的stl的题总结了才是硬道理。。。。。。。

猜你喜欢

转载自blog.csdn.net/DorisBao1021/article/details/82845194