• Tidak ada hasil yang ditemukan

ﺧﻼﺻﻪ درس ﭘﺎﻧﺰدﻫﻢ ١ ﮐﻼس ﺑﻪ ﺷ ﻞ اﻟ ﻮ

N/A
N/A
Protected

Academic year: 2024

Membagikan "ﺧﻼﺻﻪ درس ﭘﺎﻧﺰدﻫﻢ ١ ﮐﻼس ﺑﻪ ﺷ ﻞ اﻟ ﻮ"

Copied!
9
0
0

Teks penuh

(1)

٩٧ رﺎﻬﺑ ‐ ﻪﺘﻓﺮﺸﯿﭘ ﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑ یﺮﻫﻮﺟ ﻦﯿﺴﺣ :ﻂﺳﻮﺗ ﺲﯾرﺪﺗ ﺳﻮﻃ ﻦﯾﺪﻟاﺮﯿﺼﻧ ﻪﺟاﻮﺧ هﺎ ﺸﻧاد ‐ ﺿﺎﯾر هﺪ ﺸﻧاد

ﻢﻫدﺰﻧﺎﭘ سرد ﻪﺻﻼﺧ

:سرد ﻦﯾا ﻢﯿﻫﺎﻔﻣ Class Template ﻮ ﻟا ترﻮﺻ ﻪﺑ سﻼﮐ

ﻮ ﻟا ﻞ ﺷ ﻪﺑ سﻼﮐ ١

.دﺮﮐ ﻒﯾﺮﻌﺗ ﺮﯿﻐﺘﻣ ترﻮﺼﺑ ناﻮﺗ ﻣ ار ﺎﻫﺮﺘﻣارﺎﭘ هداد عﻮﻧ ﻪﮐ ﻢﯾﺪﯾد .ﻢﯾﺪﺷ ﺎﻨﺷآ ﻮ ﻟا ﻊﺑاﻮﺗ ﺎﺑ ﺎﻣ مﻮﺳ سرد رد ﻠﯿﺧ یا ﻪﻧﻮﻤﻧ ﺮﯾز ﺪﮐ ﻪﻌﻄﻗ .ﺪﻨﮐ ﻣ ﻊﻓر ار ﻒﻠﺘﺨﻣ هداد عاﻮﻧا یاﺮﺑ ﻪﻧﺎﮔاﺪﺟ ﻒﯾﺮﻌﺗ ﻪﺑ زﺎﯿﻧ ،ﻮ ﻟا ﻊﺑﺎﺗ زا هدﺎﻔﺘﺳا ﺪﻧاﻮﺗ ﻣ ﺲﯾﻮﻧ ﻪﻣﺎﻧﺮﺑ .ﺖﺳا هﺪﺷ ﻒﯾﺮﻌﺗ ﻮ ﻟا ترﻮﺼﺑ print ﻊﺑﺎﺗ ﺎﺠﻨﯾا رد .ﺪﻫد ﻣ نﺎﺸﻧ ار ﻮ ﻟا ﻊﺑﺎﺗ زا هدﺎﺳ راد ﻨﻌﻣ نآ یاﺮﺑcout«رﻮﺘﺳد ﻪﮐ یﺮﯿﻐﺘﻣ ﺮﻫ ﺎﯾ و double ، float ، int عﻮﻧ زا ﯽﯾﺎﻫﺮﯿﻐﺘﻣ یاﺮﺑ ار ﻊﺑﺎﺗ ﻦﯾا .ﺪﻫد راﺮﻗ هدﺎﻔﺘﺳا درﻮﻣ ﺪﺷﺎﺑ template <typename T>

void print(T a) { cout << a;

}

int main(){

double x = 2.3;

print(x);

int y = 10;

print(y);

return 0;

}

ﻢﯿﻧاﻮﺗ ﻣ ﺎﻬﺳﻼﮐ ﻪﻧﺪﺑ رد .دروآرد ( ﻠﮐ) generic ﺎﯾ ﻮ ﻟا ﺖﻟﺎﺣ ﻪﺑ ﺰﯿﻧ ار ﺎﻬﺳﻼﮐ ﻞ ﺷ ﻦﯿﻤﻫ ﻪﺑ ناﻮﺗ ﻣ رﻮﻄﺑ ﺎﻀﻋا ﻦﯾا عﻮﻧ سﻼﮐ ﻦﯾا زا ﯽﯾﺎﯿﺷا دﺎﺠﯾا ﻊﻗﻮﻣ ﺎﻬﻨﺗ .ﺪﻨﺘﺴﻫ T ﺮﯿﻐﺘﻣ عﻮﻧ زا ﻪﮐ ﻢﯿﺷﺎﺑ ﻪﺘﺷاد ﯽﯾﺎﻀﻋا سﻼﮐ ﯾ ﺖﻘﯿﻘﺣ رد vector سﻼﮐ .ﻢﯾا هدﺮﮐ رﺎﮐ ﺖﺳد ﻦﯾا زا یا ﻪﻧﻮﻤﻧ ﺎﺑ ﻼﺒﻗ .دﻮﺷ ﻣ ﺺﺨﺸﻣ ﺢﯾﺮﺻ .دﻮﺷ ﻣ ﺺﺨﺸﻣ ﺢﯾﺮﺻ رﻮﻄﺑ رﻮﺘﮐو هداد عﻮﻧ ،رﻮﺘﮐو ﯾ نﻼﻋا ﻊﻗﻮﻣ .ﺖﺳﻮ ﻟا

(2)

#include<iostream>

#include<vector>

#include "point.h"

int main(){

vector <int> vec1;

vector <double> vec2;

vector <Point> vec3;

return 0;

}

Array سﻼﮐ .ﺪﻨﮐ ﺖﻓﺎﯾرد ار ﻋﻮﻧ ﺮﺘﻣارﺎﭘ ناﻮﻨﻋ ﻪﺑ vector ﺪﻨﻧﺎﻣ ﻪﮐ ﻢﯾزﺎﺳ ﻣ ﺳﻼﮐ ﻦﯾﺮﻤﺗ یاﺮﺑ نﻮﻨﮐا یاﺮﺑ ار T ﻪﺳﺎﻨﺷ ﺎﻣ ﺎﺠﻨﯾا رد .ﺖﺳا هﺪﺷ نﻼﻋا ﺮﯿﻐﺘﻣ ترﻮﺼﺑ ﻪﯾارآ ﺮﺻﺎﻨﻋ عﻮﻧ .ﺖﺳا ﺮﺼﻨﻋ هد ﺎﺑ یا ﻪﯾارآ یوﺎﺣ .ﺪﻨﻨﮐ ﻣ پﺎﭼ ار نآ ﺎﯾ و ﺪﻨﻨﮐ ﻣ ﻫدراﺪﻘﻣ ار ﻪﯾارآ ﻪﮐ دراد ﻮﻀﻋ ﻊﺑﺎﺗ ود سﻼﮐ .ﻢﯾا هﺪﯾﺰﮔﺮﺑ ﺮﯿﻐﺘﻣ ﻦﯾا یراﺬ ﻣﺎﻧ

#include<iostream>

#include "point.h"

template <class T>

class Array{

public:

T x[10];

void setArray(T t){

for(int i=0;i<10;i++) x[i]=t;

}

void printArray(){

for(int i=0;i<10;i++) std::cout<<x[i];

} };

هاﺮﻤﻫ) ﻞﻣﺎﮐ رﻮﻄﺑ ار سﻼﮐ تﺎﺼﺨﺸﻣ و ﻢﺳا ﺪﯾﺎﺑ ﻢﯿﻨﮐ ﻒﯾﺮﻌﺗ سﻼﮐ ﻪﻧﺪﺑ زا جرﺎﺧ ار ﻊﺑﺎﺗ ﻢﯿﻫاﻮﺨﺑ ﺮﮔا .دﻮﺑ ﺪﻫاﻮﺧArray<T>ترﻮﺼﺑ ﺎﻣ سﻼﮐ ﻢﺳا .ﻢﯿﻨﮐ ﺮﮐذ (نآ یﻮ ﻟا ﻪﺼﺨﺸﻣ ﺎﺑ

(3)

#include<iostream>

#include "point.h"

template <class T>

class Array{

public:

T x[10];

void setArray(T t);

void printArray();

};

template <class T>

void Array<T>::setArray(T t){

for(int i=0;i<10;i++) x[i]=t;

}

template <class T>

void Array<T>::printArray(){

for(int i=0;i<10;i++) std::cout<<x[i];

}

int main(){

Array <int> a1;

a1.setArray(30);

Array <double> a2;

a2.setArray(3.2);

Array <Point> a3;

a3.setArray(Point(1,2));

return 0;

}

(4)

ﻮ ﻟا ﺖﺴﯿﻟ سﻼﮐ ﯾ ١ . ١

ﻪﺑ طﻮﺑﺮﻣ تﺎﻋﻼﻃا یزﺎﺳ هﺮﯿﺧذ و ﺮﯿﯿﻐﺗ ،ﯽﺑﺎﯾزﺎﺑ یاﺮﺑ ار LinkedList یﺪﻧﻮﯿﭘ ﺖﺴﯿﻟ سﻼﮐ ،ﻞﺒﻗ سرد رد ﺎﺠﻨﯾا رد) صﺎﺧ ﻋﻮﻧ ﻪﺑ ﻪﺘﺴﺑاو ﻪﮐ ﺖﺳا ﻦﯾا سﻼﮐ ﻦﯾا یﺎﻬﻔﻌﺿ زا ﯾ .ﻢﯾدﺮﮐ دﺎﺠﯾا ﻨﻔﻠﺗ یﺎﻬﺳﺎﻤﺗ راﺮﻗ هدﺎﻔﺘﺳا درﻮﻣ ﺪﻧاﻮﺗ ﻣ ﻨﻔﻠﺗ یﺎﻬﺳﺎﻤﺗ ﻪﺑ طﻮﺑﺮﻣ تﺎﻋﻼﻃا یزﺎﺳ هﺮﯿﺧذ یاﺮﺑ ﺎﻬﻨﺗ ﻨﻌﯾ .ﺖﺳا CallNode) .دﺮﯿ ﺑ class LinkedList{

private:

int length;

public:

CallNode* First;

CallNode* Last;

void insert_last(CallNode * ptr);

void insert_first(CallNode * ptr);

void remove_next(CallNode * ptr);

void remove_first();

void remove_last();

bool isEmpty();

int size();

void print();

void clear();

LinkedList():First(NULL),Last(NULL),length(0){}

~LinkedList(){clear();}

};

ﯽﺑﺎﯾزﺎﺑ ،ندﺮﮐ ﻪﻓﺎﺿا ﻠﺻا لﺎﻤﻋا ﻪﮐ (رﻮﺘﮐو ﺪﻨﻧﺎﻣ) ﻢﯿﺷﺎﺑ ﻪﺘﺷاد ﻠﮐ و ﺮﺗ ﻋاﺰﺘﻧا ﺳﻼﮐ ﻢﯿﻫاﻮﺨﺑ ﺮﮔا ﻦﯾا یاﺮﺑ .ﻢﯿﻨﮐ ﻒﯾﺮﻌﺗ ﻮ ﻟا ترﻮﺼﺑ ار نآ ﻢﯿﻧاﻮﺗ ﻣ ،ﺪﺷﺎﺒﻧ صﺎﺧ ﻋﻮﻧ ﻪﺑ ﻪﺘﺴﺑاو ﻟو ﺪﻫد مﺎﺠﻧا ار فﺬﺣ و ﻒﯾﺮﻌﺗ یﺪﻧﻮﯿﭘ ﺖﺴﯿﻟ ﺮﺻﺎﻨﻋ یاﺮﺑ Node سﻼﮐ .ﻢﯾروآرد ﻮ ﻟا ترﻮﺼﺑ ار Node سﻼﮐ ﺪﯾﺎﺑ اﺪﺘﺑا رﻮﻈﻨﻣ ﻮ ﻟا ترﻮﺼﺑ ﻢﻫ List سﻼﮐ .ﺖﺳا هﺪﺷ ﻒﯾﺮﻌﺗ T ﻠﮐ عﻮﻧ زا ﺮﺼﻨﻋ ﺮﻫ ﻞﺧاد data هداد عﻮﻧ .ﺖﺳا هﺪﺷ یﺪﻧﻮﯿﭘ ﺖﺴﯿﻟ شور ﺎﺑ تﺎﻋﻼﻃا هﺮﯿﺧذ و ﯽﺑﺎﯾزﺎﺑ ﻪﮐ ﺖﺴﯿﻧ ﺺﺨﺸﻣ نوﺮﯿﺑ زا ﺪﯿﻨﮐ ﺖﻗد .ﺖﺳا هﺪﺷ ﻒﯾﺮﻌﺗ و ندﺮﮐ ﻪﻓﺎﺿا ﻞﻣﺎﺷ ﻪﮐ نآ ﻣﻮﻤﻋ ﻊﺑاﻮﺗ ﺎﻬﻨﺗ ﺪﻨﮐ ﻣ هدﺎﻔﺘﺳا List سﻼﮐ زا ﻪﮐ ﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑ .دﻮﺷ ﻣ مﺎﺠﻧا ﺮﺼﻨﻋ ﻦﯿﻣاiﻪﺑ ﺳﺮﺘﺳد یاﺮﺑ ار [] ﺮ ﻠﻤﻋ ﺎﻣ ﻪﮐ ﺖﺳا ﺮﮐذ نﺎﯾﺎﺷ .ﺪﻨﯿﺑ ﻣ ار ﺖﺳﺎﻬﻨﯾا لﺎﺜﻣا و ﺮﺻﺎﻨﻋ فﺬﺣ .ﻢﯾا هدﺮﮐ یراﺬﮔرﺎﺑﺮﺳ ﺖﺴﯿﻟ

(5)

//file templatelist.h

#include<iostream>

#include<cstdlib>

using namespace std;

template <class T>

class Node{

private:

T data;

public:

Node<T> * next;

Node(): next(NULL) {}

Node(T &d):data(d), next(NULL){}

T getData();

};

template <class T>

T Node<T>::getData(){

return data;

}

template<class T>

class List{

private:

long int length;

Node<T>* First;

Node<T>* Last;

public:

void insert_last(T t);

void insert_first(T t);

void remove_next(T t);

void remove_first();

void remove_last();

bool isEmpty();

int size();

void clear();

List():First(NULL),Last(NULL),length(0){}

~List(){clear();}

T operator [](int n);

};

(6)

List سﻼﮐ ﻊﺑاﻮﺗ یزﺎﺳ هدﺎﯿﭘ template<class T>

bool List<T>::isEmpty(){

if (length==0) return true;

else

return false;

}

template<class T>

int List<T>::size(){

return length;

}

template<class T>

void List<T>::remove_first(){

if(First==NULL){

cout<<"The list is empty.";

return;

}

if(First==Last){

delete First;

First=NULL;

Last=NULL;

length--;

return;

}

Node<T>* temp=First;

First=First->next;

delete temp;

length--;

}

(7)

template<class T>

void List<T>::clear(){

Node<T> * temp =First;

Node<T> * temp1;

while(temp!=NULL){

temp1 = temp->next;

delete temp;

temp = temp1;

}

First=NULL;

Last =NULL;

length=0;

}

template<class T>

void List<T>::remove_last(){

if(First==NULL){

cout<<"The List is empty"<<endl;

return;

}

if(First ==Last){

delete First;

First=NULL;

Last=NULL;

length--;

return;

}

Node<T> * temp = First;

while(temp->next != Last) temp = temp->next;

Last = temp;

delete temp->next;

temp->next =NULL;

}

(8)

template<class T>

void List<T>::insert_last(T t){

Node<T> * nodet = new Node<T>(t);

if(First==NULL){

First= nodet;

nodet->next= NULL;

Last = First;

length++;

return;

}

Last->next=nodet;

Last = nodet;

nodet->next=NULL;

length++;

}

template<class T>

void List<T>::insert_first(T t){

Node<T> * nodet = new Node<T>(t);

if(First==NULL){

nodet->next = First;

First = nodet;

Last = First;

length++;

return;

}

nodet->next =First;

First = nodet;

length++;

}

(9)

List سﻼﮐ زا هدﺎﻔﺘﺳا

#include<iostream>

#include<string>

#include<ctime>

#include "templatelist.h"

#include "point.h"

using namespace std;

int main(){

List <Point> L;

Point x(2,3);

Point y(4,5);

L.insert_last(x);

L.insert_last(y);

long int t0=time(0);

for(long int i=0;i<50000;i++){

Point x(1,1);

L.insert_last(x);

}

long int t1= time(0);

cout<< "Insert Time:"<< t1 - t0<<endl;

for(int i=0;i<L.size();i++) L[i];

long int t2= time(0);

cout<< "Access Time:"<< t2 - t1<<endl;

return 0;

}

Referensi

Dokumen terkait