c 模板學習12之通用陣列類模板案例封裝

2021-10-19 07:33:21 字數 2029 閱讀 6250

arr.hpp

#pragma once

#include

using

namespace std;

//通用的陣列模板類

template

<

class

t>

class

myarray

//深拷貝構造,防止淺拷貝

myarray

(const myarray& a)

}//賦值運算子過載,防止淺拷貝 a=b=c鏈式程式設計

myarray&

operator=(

const myarray& a)

//非自賦值if(

this

!=&a)

}return

*this;}

//尾插法

void

push_back

(const t& val)

this

->arr[size]

= val;

size++;}

//尾刪法

void

end_del()

//通過下標訪問陣列中元素---運算子過載

t&operator

(int index)

//返回陣列的容量

intgetcap()

//返回陣列大小

intgetsize()

~myarray()}};

main.cpp

#include

#include

"arr.hpp"

using

namespace std;

//列印輸出

void

print

(myarray<

int>

& a)

intmain()

print

(a);

cout <<

"陣列容量:"

<< a.

getcap()

<< endl;

cout <<

"陣列大小:"

<< a.

getsize()

<< endl;

//尾刪法測試

a.end_del()

;print

(a);

cout <<

"陣列容量:"

<< a.

getcap()

<< endl;

cout <<

"陣列大小:"

自定義資料型別測試:

#include

#include

#include

"arr.hpp"

using

namespace std;

class

person

person

(string name,

int age)

:name

(name)

,age

(age)

string getname()

intgetage()

};//列印輸出(類模板物件做函式引數)

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

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

模板類之(陣列)

一 陣列類 shuzu.h 二 應該要注意的幾個問題 1 為什麼拷貝建構函式要這麼複雜?為什麼不是簡單的賦值?這涉及到深拷貝和淺拷貝的問題。簡單的對物件成員賦值只能實現淺拷貝,淺拷貝會造成記憶體訪問的安全性問題 同一塊記憶體被釋放兩次 2 為什麼有些函式返回值是物件的引用,改為返回物件值可以嗎?如果...

通用的類模板

但是,如果您需要一次讀取或更改幾個變數 std atomic a,b,c,並且不想實現無鎖演算法並解決aba問題,那麼您需要使用鎖。cpu原子cas功能 在大多數cpu中 可以檢查是否僅更改了乙個最大寬度為64位的變數,但是那時可以更改另乙個變數。解決方案 std atomic 允許對t型使用任何大...