泛型程序设计与C++标准模板库.ppt
;主要内容;泛型程序设计;STL组件之间的关系;例如;例如;容器;容器分类;所有容器共有函数;顺序容器和关联容器共有函数;适配器;迭代器;算法;顺序容器;顺序容器——向量;向量的函数-1;向量的函数-2;向量的函数-3;向量的函数-3;向量操作;//1.cpp
#includeiostream
#includeiomanip
#includevector //包含向量容器头文件
usingnamespacestd;
intmain()
{
vectorintA(10);
intn;
intprimecount=0,i,j;
coutEnteravalue=2asupperlimit:;
cinn;
A[primecount++]=2; ;for(i=3;in;i++)
{if(primecount==A.size())
A.resize(primecount+10);
if(i%2==0)
continue;
j=3;
while(j=i/2i%j!=0)
j+=2;
if(ji/2)A[primecount++]=i;
}
for(i=0;iprimecount;i++)//输出质数
{coutsetw(5)A[i];
if((i+1)%10==0)//每输出10个数换行一次
coutendl;
}
coutendl;
};顺序容器——双端队列;*;*;顺序容器——列表;//3.cpp
#includeiostream
#includelist
usingnamespacestd;
intmain()
{
listintLink; //构造一个列表用于存放整数链表
inti,key,item;
for(i=0;i10;i++)//输入10个整数依次向表头插入
{
cinitem;
Link.push_front(item);
}
coutList:;//输出链表;listint::iteratorp=Link.begin();
while(p!=Link.end())//输出各节点数据,直到链表尾
{cout*p;
p++;//使P指向下一个节点
}
coutendl;
cout请输入一个需要删除的整数:;
cinkey;
Link.remove(key);
coutList:;//输出链表
p=Link.begin(); //使P重新指向表头
while(p!=Link.end())
{cout*p;
p++;//使P指向下一个节点
}
coutendl;
};容器适配器;#includeiostream
#includequeue //声明Queue容器适配器头文件
usingnamespacestd;
templateclassT
voidpopElements(Ts);
intmain()
{queueintintDequeQueue; //默认情况下以Queue容器作为根底数据结构
for(inti=0;i10;++i){
intDequeQueue.push(i); //用push函数将整数添加到deque容器Queue顶部
}
coutPoppingfromintDequeQueue:;
popElements(intDequeQueue); //将Queue中的元素弹出并输出
coutendl;
};templateclassT
voidpopElements(Ts) //定义模板函数
{
while(!s.empty()){
couts.front(); //用函数front读取Queue顶上的元素并输出
s.pop(); //用函数pop删除顶上的元素
}
};什么是迭代器;迭代器的类型;迭代器适配器;#includeiostream
#includevector
#includealgorithm
usingnamespacestd;
intmain()
{
intA[]={1,2,3