STL标准模板库

STL(Standard Template Library)标准模板库是C++语言的一部分,其中包含了一些容器类型,例如vectorlistsetmap、还包括了一些算法,例如查找、排序。实际开发中用户不必自己动手写数据结构,只需要调用STL中的相应的容器便能够完成所需的功能。STL中的容器都是用模板实现的,这使得STL中的适用性更强,而不用考虑不同数据类型之间的细微差异。

1、 向量vector

Vector就象是一个数组,可以快速的随机的访问数组中的元素,与数组不同的是vector大小可以自动增长。Vector的插入和删除操作在序列的尾部进行时最为高效。由于在vector中间插入和删除元素需要移动元素,所以在vector中间插入元素是低效的。

#include "stdafx.h"

#include <vector>     //vector所需要的头文件

using namespace std;   //vector的定义在std命名空间

 

 

int main(int argc, char* argv[])

{

       //创建一个int类型的vector,类似于一个数组

       vector<int> v;

      

       //向数组末尾添加3个元素

       v.push_back(1);

    v.push_back(2);

       v.push_back(3);

 

       //由于vector类似于数组,所以可以通过下标访问其元素

       //size函数可以获得vector的大小----元素的个数

       for (int i=0; i<v.size(); i++)

       {

              printf("%d/n",v[i]);

       }

 

 

       //删除最后一个元素

       v.pop_back();

 

 

       //重新遍历所有元素,此次使用vector<int>::iterator-----迭代器

       vector<int>::iterator vit;

       for (vit=v.begin(); vit!=v.end(); vit++)

       {

              printf("%d/n", *vit);

       }

 

       return 0;

 

}

Vector<int> v 表示创建了一个int类型的vector,相当于一个int类型的数组。使用vectorpush_back方法可以向vector的尾部添加int类型的元素,这种操作是高效的。Vector类型类似于数组,可以通过下标方式对vector内的元素进行随机访问。使用size方法可以得到vector内部的元素个数。使用pop_back方法可以将vector尾部的元素删除,这个操作也是高效的。对vector的元素进行遍历,除了使用下标的方式,还可以使用vector对应的iterator(迭代器)对其进行遍历。迭代器就相当于一个指针,begin方法返回vector中的第一个元素的迭代器,而end方法返回的末尾迭代器,此迭代器不指向任何元素。

注意:vector相当于一个数组,可动态增加其大小。在操作vector时,序列尾部操作是最高效的,所以通常用vector类来模拟数据结构中的堆栈。

双端队列deque

Dequedouble-ended queue的缩写,dequevector类似,也相当于一个数组,可以通过下标快速、随机的访问,但deque在序列前后操作都是高效的。

#include <stdafx.h>

#include <deque>                 //deque所需头文件

using namespace std;             //deque定义在std命名空间

 

 

int main(int argc, char* argv[])

{

       //创建一个int类型的deque,类似一个int类型数组

       deque<int> d;

 

 

       //向数组末尾添加3个元素

       d.push_back(1);

       d.push_back(2);

       d.push_back(3);

 

 

       //向数组头添加3个元素

       d.push_front(4);

       d.push_front(5);

       d.push_front(6);

 

 

       //由于deque也类似数组,所以可以通过下标访问其元素

       //size函数可以获得deque的大小------元素个数

       for (int i=0; i<d.size(); i++)

       {

              printf("%d/n",d[i]);

       }

 

 

       //删除最后一个元素

       d.pop_back();

 

 

       //删除第一个元素

       d.pop_front();

 

       //重新遍历所有元素,此次使用deque<int>::iterator------迭代器

       deque<int>::iterator dit;

       for (dit = d.begin(); dit != d.end(); dit++)

       {

              printf("%d",*dit);

       }

       return 0;

}

从上面的代码可以看出,dequevector在使用上几乎是一样的,只是deque带有对头序列的操作的功能,使用pop_frontpush_front方法,可以对deque的头部进行高效操作。

 

 

转自:http://hi.baidu.com/nowebshell/blog/item/dbc1fad2ac1e1d83a1ec9c77.html

猜你喜欢

转载自blog.csdn.net/dongshengliao/article/details/5692823