c++ stl简单用法

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 v;

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()

{

queueq;

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 v1; //默认构造函数v1为空

Vector v2(v1);//v2是v1的一个副本

Vector v3(n,i);//v3包含n个值为i的元素

Vector v4(n); //v4含有n个值为0的元素

二、值初始化

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初始化,对于类类型将调用其默认构造函数进行初始化(如果有其它构造函数而没有默认构造函数,那么此时必须提供元素初始值才能放入容器中)。

举例:

相关文档
最新文档