姓名 郭宇
学号 16130130299
【嵌牛导读】: c++ STL原理及组成
【嵌牛鼻子】:泛型编程 STL 原理
【嵌牛提问】:怎样使用容器及其通用函数
【嵌牛正文】:STL是由Alexander Stepanov, Meng Lee,David R Musser 等人在惠普实验室
工作时所开发的一系列软件的统称。
STL三大组件 容器 迭代器 通用算法
所谓容器就是用于存储用户数据且具有特定数据读写端口的存储空间集合容器用于数据读写的端口也叫做开口STL将开口开在存储集合尾端的容器叫做向量
在STL中算法实际上就是函数这些函数以容器中数据作为操作对象来实现用户某种需求在STL中绝大多数算法都是独立于容器而为所有容器通用故称为通用算法之所以通用是因为在算法和容器之间那个用于数据传递的中间人比较神奇是这个中间人把不同容器的数据界面统一起来由于这个中间人具有对数据进行遍历的能力故叫做迭代器如果把容器看做数据源算法看做数据用户那么迭代器就是这两者之间的纽带所以称之为STL三大主要角色
下面看一下一个简单的实例
#include<ioatream>
#include<cstdlib>
#include<vector>
#include<algorithm>
using namespace std;
int main(int argc, char** argv) {
vector <int>vector;//定义一个向量 模板实例为int
//为了使可以对向量数组中的数据进行操作 这个模板封装了一个可以起到指针作用的迭代器//他可以根据需要指向相应的数据存储位置(数组单元地址) 从而可以像使用指针那样对数据进行操作vector::iterator iter;//定义向量的迭代器
for(int i=0;i<10;i++)
intvector.push_back((int)rand());
//intvector.push_back 从数组末尾输入数据 该数据就是这个方法的参数本例就是//
for(iter=intvector.begin();iter!=intvector.end();iter++)
cout<<*iter<<" ";cout<());//输出容器中的数据
sort(intvector.begin(),intvector.end(),greater());//对容器中数据按从大到小排序
for(iter=intvector.begin();iter!=intvector.end();iter++)
cout<<*iter<<" ";
return 0;
}
STL的目标简单易用且不损失效率,用户仅需要说明清楚使用什么容器件以及需要对容器中的数据做什么工作,这些与自己业务逻辑相关的事情就可以了,对内存的动态请求与释放全部由量对象自己完成了.