c++ stl简单用法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++ STL Adaptor stack和queue的使用
1.Stack
top()返回栈顶元素,并不移除这个元素empty()如果栈空返回true,否则false size()栈的大小
void push()插入元素到栈顶
void pop()移除栈顶元素
#include
#include
using namespace std;
void main()
{
stack
for(int i=0;i<10;i++)
v.push(i+97);
cout< while(!v.empty()) { cout< v.pop(); } } 2.queue empty()判空 front()返回队头元素 pop()删除对头元素 back()返回队尾元素 push()在队尾加入元素 size()大小 #include #include using namespace std; int main() { queue for(int i=0;i<5;i++)q.push(i); while(!q.empty()) //or while(q.size()) { cout< q.pop(); } return 0; } //树的非递归遍历,层次遍历什么的,不用自己再写栈和队列了,直接利用STL 中的就行了 头文件: #include using namespace std; 1.默认的sort函数是按升序排。对应于1) sort(a,a+n); //两个参数分别为待排序数组的首地址和尾地址 2.可以自己写一个cmp函数,按特定意图进行排序。对应于2) 例如: int cmp( const int &a, const int &b ){ if( a > b ) return 1; else return 0; } sort(a,a+n,cmp); 是对数组a降序排序 又如: int cmp( const POINT &a, const POINT &b ){ if( a.x < b.x ) return 1; else if( a.x == b.x ){ if( a.y < b.y ) return 1; else return 0; } else return 0; } sort(a,a+n,cmp); 是先按x升序排序,若x值相等则按y升序排 与此类似的还有C中的qsort,以下同附上qsort的使用方法: #include 格 式 qsort(array_name,data_number,sizeof(data_type),co mpare_function_name) (void*)bsearch (pointer_to_key_word,array_name,find_number, sizeof(data_type),compare_function_name) e.g. int Cmp(const void*a,const void *b) { int*pa=(int*)a,*pb=(int*)b; if(*pa>*pb) return 1; else if (*pa==*pb) return 0; else return -1; } qsort(data,N,sizeof(int),Cmp); // 对int型数组进行快速排序(非降序排列) p=(int*)bsearch(&a,data,n,sizeof(int),Cmp); bool compare(int a,int b) { return ab,则为降序 } 标准库Vector类型 使用需要的头文件: #include Vector:Vector 是一个类模板。不是一种数据类型。Vector 一、定义和初始化 Vector Vector Vector Vector 二、值初始化 1> 如果没有指定元素初始化式,标准库自行提供一个初始化值进行值初始化。 2> 如果保存的式含有构造函数的类类型的元素,标准库使用该类型的构造函数初始化。 3> 如果保存的式没有构造函数的类类型的元素,标准库产生一个带初始值的对象,使用这个对象进行值初始化。 三、Vector对象最重要的几种操作 1. v.push_back(t) 在数组的最后添加一个值为t的数据 2. v.size() 当前使用数据的大小 3. v.empty() 判断vector是否为空 4. v[n] 返回v中位置为n的元素 5. v1=v2 把v1的元素替换为v2元素的副本 6. v1==v2 判断v1与v2是否相等 7. !=、<、<=、>、>= 保持这些操作符惯有含义 vector容器类型 vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。 vector的构造 函数原型: template explicit vector(); // 默认构造函数,vector对象为空 explicit vector(size_type n, const T& v = T()); // 创建有n个元素的vector对象 vector(const vector& x); vector(const_iterator first, const_iterator last); 注:vector容器内存放的所有对象都是经过初始化的。如果没有指定存储对象的初始值,那么对于内置类型将用0初始化,对于类类型将调用其默认构造函数进行初始化(如果有其它构造函数而没有默认构造函数,那么此时必须提供元素初始值才能放入容器中)。 举例: