C 實現模板陣列類

2021-10-02 11:10:59 字數 3158 閱讀 1129

利用模板陣列類,可以實現類似於容器的功能

myvector.h

#pragma once

#include

using

namespace std;

template

<

typename t>

class

myvector

;

myvector.cpp

#pragma once

#include

"myvector.h"

template

<

typename t>

myvector

::myvector

(int size)

template

<

typename t>

myvector

::myvector

(const myvector& obj)

//分配記憶體空間

this

->m_len = obj.m_len;

this

->m_space =

new t[

this

->m_len]

;//賦值

for(

int i =

0; i < m_len; i++)}

template

<

typename t>

myvector::~

myvector()

}template

<

typename t>

t& myvector

::operator

(int index)

template

<

typename t>

myvector

& myvector

::operator=(

const myvector& obj)

m_len = obj.m_len;

m_space =

new t[m_len]

;for

(int i =

0; i < m_len; i++

)return

*this;}

template

<

typename t>

ostream&

operator

<<

(ostream& out, myvector

& obj)

return out;

}

myvector_test.cpp

#pragma once

#define _crt_secure_no_warnings

#include

#include

"myvector.cpp"

using

namespace std;

//1 優化teacher類,屬性變成char* pname,建構函式裡面分配記憶體

//2 析構函式 釋放pname指向的記憶體空間

//3 避免淺拷貝 過載= 重寫拷貝建構函式

//4 在teacher中過載<<

//5 在模板陣列類 存int char teacher teacher*

//*****>stl 容器的概念

class

teacher

;teacher::

teacher()

teacher::

teacher

(const teacher& obj)

age = obj.age;

int len =

strlen

(obj.pname)

; pname =

newchar

[len +1]

;strcpy

(this

->pname, obj.pname);}

teacher::

teacher

(const

char

* name,

int age)

teacher::

~teacher()

}void teacher::

printteacher()

teacher& teacher::

operator

=(teacher& obj)

age = obj.age;

int len =

strlen

(obj.pname)

; pname =

newchar

[len +1]

;strcpy

(pname, obj.pname)

;return

*this;}

ostream&

operator

<<

(ostream& out, teacher& obj)

intmain()

myvector<

int> myv2 = myv1;

cout << myv2 << endl;

myvectort(

4); teacher t1

("lily",23

),t2(

"lucy",24

),t3(

"bob",33

),t4(

"alex",43

);t[0

]= t1;

t[1]= t2;

t[2]= t3;

t[3]= t4;

cout << t << endl;

myvector>tt(

4);//定義指向teacher的指標

tt[0]

=&t1;

//傳位址

tt[1]

=&t2;

tt[2]

=&t3;

tt[3]

=&t4;

for(

int i =

0; i <

4; i++

)return0;

}

C 模板實現智慧型陣列類

這個類的使用非常有限,不能說是真正的智慧型陣列 對於一般的資料型別還可以,比如int float char等 但是,string類這樣的類型別好像不是很好 但是一些基礎的東西卻是學習的重點 標頭檔案myarray.h pragma once include using namespace std t...

C 陣列實現佇列 堆疊 模板類

前面發現老師要求我們寫乙個堆疊 佇列,但是我發現每一次都要修改資料型別,而且我在網上也沒找到模板類,所以我就自己看了看模板類的知識,自己用陣列寫了乙個,貌似使用起來沒有什麼問題。1.迴圈佇列 templateclass myqueue templatemyqueue myqueue int max ...

C 有界陣列模板類(類模板)

題目描述編寫有界陣列模板boundarray 即檢查對陣列元素下標引用並在下標越界時終止程式的執行 能夠儲存各種型別的資料。要求實現對陣列進行排序的方法sort,及對排序後的陣列進行查詢的方法search。輸入 第一行先輸入t,表示有t個測試用例 從第二行開始輸入每個測試用例的資料。首先輸入資料型別...