模板实例Word下载.docx

上传人:b****1 文档编号:5758141 上传时间:2023-05-05 格式:DOCX 页数:16 大小:20.73KB
下载 相关 举报
模板实例Word下载.docx_第1页
第1页 / 共16页
模板实例Word下载.docx_第2页
第2页 / 共16页
模板实例Word下载.docx_第3页
第3页 / 共16页
模板实例Word下载.docx_第4页
第4页 / 共16页
模板实例Word下载.docx_第5页
第5页 / 共16页
模板实例Word下载.docx_第6页
第6页 / 共16页
模板实例Word下载.docx_第7页
第7页 / 共16页
模板实例Word下载.docx_第8页
第8页 / 共16页
模板实例Word下载.docx_第9页
第9页 / 共16页
模板实例Word下载.docx_第10页
第10页 / 共16页
模板实例Word下载.docx_第11页
第11页 / 共16页
模板实例Word下载.docx_第12页
第12页 / 共16页
模板实例Word下载.docx_第13页
第13页 / 共16页
模板实例Word下载.docx_第14页
第14页 / 共16页
模板实例Word下载.docx_第15页
第15页 / 共16页
模板实例Word下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

模板实例Word下载.docx

《模板实例Word下载.docx》由会员分享,可在线阅读,更多相关《模板实例Word下载.docx(16页珍藏版)》请在冰点文库上搜索。

模板实例Word下载.docx

Max(Tthefirst,Tthesecond,Tthethird):

item1(thefirst),item2(thesecond),item3(thethird)

{

voidMax<

SetItem(Tthefirst,Tthesecond,Tthethird)

item1=thefirst;

item2=thesecond;

item3=thethird;

TMax<

GetMaxItem()

Tmaxitem;

maxitem=item1>

item2?

item1:

item2;

maxitem=maxitem>

item3?

maxitem:

returnmaxitem;

Max<

int>

nmyMax(1,2,3);

double>

dblmyMax(1.2,1.3,-1.4);

nmyMax.GetMaxItem()<

dblmyMax.GetMaxItem()<

或者

template<

classMax//声明类模板Max

voidMax<

TMax<

#include<

iostream>

usingnamespacestd;

//首先看结点组织,采用结点类,凡与结点数据和指针操作有关函数作为成员函数

classList;

classNode{

Tinfo;

//数据域

Node<

*link;

//指针域

public:

Node();

//生成头结点的构造函数

Node(constT&

data);

//生成一般结点的构造函数

voidInsertAfter(Node<

*P);

//在当前结点后插入一个结点

*RemoveAfter();

//删除当前结点的后继结点,返回该结点备用

friendclassList<

;

//以List为友元类,List可直接访问Node的私有成员,与结构一样方便,但更安全

};

Node(){link=NULL;

Node(constT&

data){

info=data;

link=NULL;

voidNode<

InsertAfter(Node<

*p){

p->

link=link;

link=p;

Node<

*Node<

RemoveAfter(){

*tempP=link;

if(link==NULL)tempP=NULL;

//已在链尾,后面无结点

elselink=tempP->

link;

returntempP;

//再定义链表类,选择常用操作:

包括建立有序链表、搜索遍历、插入、删除、取数据等

classList{

*head,*tail;

//链表头指针和尾指针

List();

//构造函数,生成头结点(空链表)

~List();

//析构函数

voidMakeEmpty();

//清空一个链表,只余表头结点

*Find(Tdata);

//搜索数据域与data相同的结点,返回该结点的地址

intLength();

//计算单链表长度

voidPrintList();

//打印链表的数据域

voidInsertFront(Node<

*p);

//可用来向前生成链表,在表头插入一个结点

voidInsertRear(Node<

//可用来向后生成链表,在表尾添加一个结点

voidInsertOrder(Node<

*p);

//按升序生成链表

*CreatNode(Tdata);

//创建一个结点(孤立结点)

*DeleteNode(Node<

//删除指定结点

List<

List(){

head=tail=newNode<

();

~List(){

MakeEmpty();

deletehead;

voidList<

MakeEmpty(){

*tempP;

while(head->

link!

=NULL){

tempP=head->

head->

link=tempP->

//把头结点后的第一个节点从链中脱离

deletetempP;

//删除(释放)脱离下来的结点

}

tail=head;

//表头指针与表尾指针均指向表头结点,表示空链

*List<

Find(Tdata){

*tempP=head->

while(tempP!

=NULL&

&

tempP->

info!

=data)tempP=tempP->

//搜索成功返回该结点地址,不成功返回NULL

intList<

Length(){

*tempP=head->

intcount=0;

tempP=tempP->

count++;

returncount;

PrintList(){

cout<

info<

'

\t'

InsertFront(Node<

*p){

link=head->

head->

link=p;

if(tail==head)tail=p;

InsertRear(Node<

link=tail->

tail->

tail=p;

InsertOrder(Node<

link,*tempQ=head;

//tempQ指向tempP前面的一个节点

if(p->

info)break;

//找第一个比插入结点大的结点,由tempP指向

tempQ=tempP;

tempQ->

InsertAfter(p);

//插在tempP指向结点之前,tempQ之后

if(tail==tempQ)tail=tempQ->

CreatNode(Tdata){//建立新节点

*tempP=newNode<

(data);

DeleteNode(Node<

*tempP=head;

while(tempP->

=p)tempP=tempP->

if(tempP->

link==tail)tail=tempP;

returntempP->

RemoveAfter();

//本函数所用方法可省一个工作指针,与InsertOrder比较

intmain(){

*P1;

List<

list1,list2;

inta[16],i,j;

请输入16个整数"

for(i=0;

i<

16;

i++)cin>

>

a[i];

//随机输入16个整数

i++){

P1=list1.CreatNode(a[i]);

list1.InsertFront(P1);

//向前生成list1

P1=list2.CreatNode(a[i]);

list2.InsertRear(P1);

//向后生成list2

list1.PrintList();

list1长度:

list1.Length()<

list2.PrintList();

请输入一个要求删除的整数"

cin>

j;

P1=list1.Find(j);

if(P1!

P1=list1.DeleteNode(P1);

deleteP1;

list1.PrintList();

elsecout<

未找到"

list1.MakeEmpty();

//清空list1

list1.InsertOrder(P1);

//升序创建list1

return0;

vector<

a(n);

 

//按需创建

b(10,1);

//10个元素赋全1,灵活的初始化

c(b);

//整体拷贝创建

f(t,t+5);

//异类拷贝创建

迭代器定义:

Vector 

iterator 

it;

It为定义的迭代器,为指针类型;

b.begin();

迭代器指向第一个元素位置;

b.end();

迭代器指向最后一个元素的后一个位置;

b.size();

求得向量里的元素数;

d(b.begin(),b.begin()+3);

 //局部拷贝创建d为b的前3个元素

a.assign(100);

//动态扩容至100个元素

a.assign(b.begin(),b.begin()+3);

//b的前3个元素赋给a

a.assign(4,2);

//a向量含4个元素,全初始化为2

intx=a.back();

//a的最后一个元素赋给变量x

a.clear();

//a向量清空(不再有元素)

if(a.empty())cout<

”empty”;

//a判空操作

inty=a.front();

//a的第一个元素赋给变量y

a.pop_back();

//删除a的最后一个元素

a.push_back(5);

//a最后插入一个元素,其值为5

a.resize(10);

//a元素个数调至10。

多删少补,其值随机

a.resize(10,2);

//a元素个数调至10。

多删少补,新添元素初值为2

if(a==b)cout<

”equal”;

//a与b的向量比较操作

1.基本操作

vector是向量类型,她是一种对象实体,具有值,所以可以看作是变量。

她可以容纳许多其他类型的相同实体,

如若干个整数,所以称其为容器。

Vector是C++STL(标准模板类库)的重要一员,使用她时,只要包括头文件#include<

vector>

即可。

vector可以有四种定义方式:

是模板形式,尖括号中为元素类型名,她可以是任何合法的数据类型。

(1)vector<

a(10);

//定义了10个整数元素的向量,但并没有给出初值,因此其值是不确定的。

(2)vector<

b(10,1);

//定义了10个整数元素的向量,且给出每个元素的初值为1。

这种形式是数组望尘莫及的,

//数组只能通过循环来成批的赋给相同初值。

(3)vector<

//用另一个现成的向量来创建一个向量。

(4)vector<

d(b.begin(),b.begin()+3);

//定义了其值依次为b向量中第0到第2个(共3个)元素的向量。

因此,创建向量时,不但可以整体向量复制性赋值,还可以选择其他容器的部分元素来定义向量和赋值。

特别的,向量还可以从数组获得初值。

例如:

inta[8]={2007,9,24,2008,10,14,10,5};

va(a,a+8);

上面第(4)种形式的b.begin()、b.end()是表示向量的起始元素位置和最后一个元素之外的元素位置。

向量元素位置也属于一种类型,称为遍历器。

遍历器不单表示元素位置,还可以在容器中前后挪动。

每种容器都有对应的遍历器。

向量中的遍历器类型为:

iterator

因此要输入向量中所有元素,可以有两种循环控制方式:

for(inti=0;

i<

a.size();

++i)//第一种方法

a[i]<

for(vector<

iteratorit=a.begin();

it!

=a.end();

++it)//第二种方法

*it<

第一种方法是下标方式,a[i]是向量元素操作,这种形式和数组一样;

第二种方法是遍历器方式,*it是指针间访形式,它的意义是it所指向的元素值。

a.size()是向量中元素的个数,a.begin()表示向量的第一个元素,这种操作方式是一个对象捆绑一个函数调用,

表示对该对象进行某个操作。

类似这样的使用方式称为调用对象a的成员函数,这在对象化程序设计中很普遍。

向量中的操作都是通过使用成员函数来完成的。

它的常用操作有:

 

//b向量的0~2元素构成向量赋给a

//使a向量只含0~3元素,且赋值为2

intx=a.back();

//将a的最后一个向量元素值赋给整数型变量x

//a向量中元素清空(不再有元素)

empty"

//a.empty()经常作为条件,判断向量是否为空

inty=a.front();

//将a的第一个向量元素值赋给整型变量y

//删除a向量的最后一个元素

//在a向量最后插入一个元素,其值为5

//将向量元素个数调至10个。

多则删,少则补,其值随机

//将向量元素个数调至10个。

多则删,少则补,其值为2

if(a=b)cout<

epual"

//向量的比较操作还有!

=,<

<

=, 

>

=

除此之外,还有元素的插入与删除、保留元素个数、容量观察等操作。

用STLvector来创建二维数组

通常情况下,采用向量创建二维数组的方法有两种:

方法一:

1introw=3;

//行数

2intcolumn=4;

//列数

3vector<

>

arry2(row);

//定义一个三行四列的数组

4for(inti=0;

arry2.size();

i++)

5{

6arry2[i].resize(column);

7}

方法二:

arry2(row,vector<

(column));

algorithm>

boolcmp(inta,intb);

inti;

vector<

a;

for(i=1;

=10;

a.push_back(i);

vector<

iteratorit;

for(it=a.begin();

it!

it++)

*it;

intx=a.back();

x<

c(a);

inty=c.front();

y<

a.pop_back();

a.resize(12);

a.resize(15,2);

c.clear();

if(c.empty())

向量已为空!

\n"

d(a.begin(),a.begin()+5);

for(it=d.begin();

=d.end();

s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2