向量Vector就是容器, iterator是迭代器 STL用sort().PPT
文本预览下载声明
#includeiostream #includelist using namespace std; int main() { int i; listint L1,L2; int a1[]={100,90,80,70,60}; int a2[]={30,40,50,60,60,60,80}; for(i=0;i5;i++) L1.push_back(a1[i]); for(i=0;i7;i++) L2.push_back(a2[i]); L1.reverse(); L1.merge(L2); coutL1的元素个数为:L1.size()endl; L1.unique(); while(!L1.empty()) { coutL1.front()\t; L1.pop_front(); } coutendl; } 【练习】 阅读程序 * 【练习】 编写程序 建立一个保存学生数据(学号,姓名,专业)的链表,可以输出所有学生的数据。并可逆置链表、删除指定学生。 3、deque双端队列容器 * 双端队列中的元素可以从两端弹出,插入和删除操作可以在表的两端进行,而且效率极高. vector与deque同属于随机访问容器,vector拥有的成员函数deque也都含有。 特点 在两端插入或删除元素快 在中间插入或删除元素慢 随机访问较快,但比向量容器慢 * deque数据结构分析 deque采用分块线性存储结构;deque分成若干线性存储块,称为deque块。块的大小一般为512个字节. 所有的deque块使用一个Map块进行管理,每个Map数据项记录各个deque块的首地址. deque使用了两个迭代器M_start和M_finish,对首个deque块和末deque块进行控制访问。 (1) 创建deque对象 四种方式: 创建空双端队列: deque 类型T 对象名; 例如: deque int d; //创建整型双端队列d 创建具有n个元素的双端队列: deque 类型T 对象名(n); 例如: deque int d(10); //创建整型双端队列d,10个元素 创建具有n个元素的双端队列,指定元素初始值: deque 类型T 对象名(n,初值); 例如: deque int d(10,8); //创建整型双端队列d ,10个元素,每个元素值均为8 由已有deque容器创建: deque 类型T 对象名(已有对象名); 例如: deque int d2(d1); //创建整型双端队列d1的副本d2 * 创建deque双端队列 几种初始化deque对象的方式 dequeT t1; list保存类型为T的对象。默认构造函数t1为空 dequeT t2(t1); t2是t1的一个副本 dequeT t3(n, i); t3包含n个值为i的元素 dequeT t4(n); t4包含有值初始化元素的n个结点 * #includeiostream #includedeque using namespace std; int main() { dequeint d1(5); //创建双端队列 dequeint d2(8,9); dequeint::iterator it; d1.push_back(2); d1.push_front(3); dequeint d3(d1); //创建双端队列 for (it=d1.begin();it!=d1.end();it++) cout*it , ; coutendl; for (it=d2.begin();it!=d2.end();it++) cout*it , ; coutendl; for (it=d3.begin();it!=d3.end();it++) cout*it , ; coutendl; return 0; } 【例22】创建整型双端队列,输出全部元素值。 * deque容器中主要成员函数 函 数 名 功 能 说 明 push_front 在容器前端增加元素 pop_front 在容器前端删除元素 push_b
显示全部