C 基礎學習筆記 自定義陣列模板類

2021-08-08 05:20:09 字數 3095 閱讀 4187

//!內容:陣列模板類

/*修改:2023年9月13上午

成員方法中delete未正確匹配

改進:2023年9月13晚上

陣列總量改為固定

*/#define _crtdbg_map_alloc

#include #include #include "arraytemplate.h"

#include "arr.h"

#include int main()

clock_t two = clock();

arraytesttwo(1);

for (int i = 0; i < 10000; i++)

clock_t three = clock();

cout << "add(5, 1)*10000固定大小arr: " << (double)(two - one) / clocks_per_sec << endl;

cout << "add(5, 1)*10000不固定array: " << (double)(three - two) / clocks_per_sec << endlfor (int i = 0; i < test.size(); i++)

cout << endl << "間隔插入數字6:";

for (int i = 5; i >= 0; i--)

for (int i = 0; i < test.size(); i++)

cout << endl << "第乙個數字4位於:位" << test.search(4);

test.delete(9);//刪除位9的4

test.reset(4, 2);//將位2設定為4

cout << endl << "reset(4, 2)後4位於:位" << test.search(4) << endl << endl;

cout << "測試char *:" << endl;

cout << "宣告乙個長度為3的char型陣列並賦值:\n";

arrstr("aa");

for (int i = 0; i < str.size(); i++)

str.add("add");

str.reset("reset", 1);

cout << "\n現在陣列內容為:\n";

for (int i = 0; i ss("string");

for (int i = 3; i >= 0; i--)

ss.reset("111", 1);

for (int i = 0; i

#pragma once

template class arr

explicit arr(const t&t)//構造

~arr()//析構

//下標訪問

t&operator(int i);

//插入or增加乙個元素

bool add(const t&t, int i = -1);

//刪除某個元素

bool delete(int i = -1);

//重置某個元素

bool reset(const t&t, int i);

//查詢某個元素第乙個下標

int search(const t&t);

//查詢陣列長度

int size();

};template t& arr::operator(int i)

return arr[i];

}template bool arr::add(const t&t, int i)

else if (i < 0 || i >= count)

else if (i >= 0 && ii; x--)

arr[x] = arr[x - 1];

arr[i] = t;

return true;

} else return false;

}template bool arr::delete(int i)

else if (i >= 0 && count>0 && ibool arr::reset(const t&t, int i)

else return false;

}template int arr::search(const t&t)

//!使用模板實現乙個自定義的陣列類,

//!能夠新增、修改、刪除、使用下標訪問資料、

//!根據資料返回資料組中第乙個符合的小標、

//!獲取陣列中當前儲存的資料個數

#pragma once

#include template class array

array()

explicit array(const t&t);//初始化為同乙個數值

~array()

temp = nullptr;

} //下標訪問

t&operator(int i);

//插入or增加乙個元素

bool add(const t&t, int i = -1);

//重置某個元素

bool reset(const t&t,int i);

//刪除某個元素

bool delete(int i=-1);

//查詢某個元素第乙個下標

int search(const t&t);

//查詢陣列長度

int size();

};template array::array(const t&t)

template t& array::operator(int i)

return ar[i];

}template bool array::add(const t&t,int i)

else if (i >= 0 && ibool array::reset(const t&t,int i)

else return false;

}template bool array::delete( int i)

else if(i>=0&&count>0&&iint array::search(const t&t)

C 自定義類模板

c 中有乙個重要特性,那就是模板型別。類似於objective c中的泛型。c 通過類模板來實現泛型支援。在引入typename之前,class關鍵字早已在模板申明中被使用。在typename關鍵字引入後,可以用它來替代class關鍵字。如 template和 template相同 1 定義乙個te...

C 模板 37 類模板練習 自定義陣列類

到這裡,模板相關基本學習完,現在來利用模板類寫乙個 例子。這個例子就是自定義乙個陣列模板類,需要實現陣列的一些常用操作。例如拷貝,有參構造,查詢,刪除等。1.自定義陣列類需求 模板案例描述 實現乙個通用的陣列類,要求如下 1 可以對內建資料型別以及自定義資料型別的資料進行儲存 2 將陣列中的資料儲存...

自定義陣列類

在學習c 的過程中,我們經常使用到陣列,那怎麼去定義乙個類去實現陣列的功能呢?我們先列出一些經常對陣列進行的一些操作,1 建立乙個指定容量的陣列 2 用已有的陣列初始化另乙個陣列 3 用已有的陣列給另乙個陣列賦值 4 給陣列新增元素 給陣列元素賦值 5 獲取陣列指定元素的值 6 輸入一定數量的值,將...