C arrayList類的實現

2021-10-17 14:18:52 字數 4577 閱讀 5949

lineartlist.h :

#pragma once

template

<

class

t>

class

lineartlist

;virtual

bool

empty()

const=0

;// 判斷線性表是否為空

virtual

intsize()

const=0

;// 返回線性表的長度

virtual t&

get(

int theindex)

const=0

;//返回索引為theindex的元素

virtual

intindexof

(const t& theelement)

const=0

;//返回元素theelement第一次出現時的索引

virtual

void

erase

(int theindex)=0

;//刪除索引theindex的元素

virtual

void

insert

(int theindex,

const t& theelement)=0

;//把theelement插入線性表中索引為theindex的位置上

virtual

void

output()

const=0

;//把線性表插入輸出流out

};

arraylist.h :

#pragma once

#include

"lineartlist.h"

//不可省略

template

<

class

t>

class

arraylist

:public lineartlist

bool

empty()

const

intsize()

const

t&get

(int theindex)

const

;int

indexof

(const t& theelement)

const

;void

erase

(int theindex)

;void

insert

(int theindex,

const t& theelement)

;void

output()

const

;int

capacity()

const

void

changelengthid

(t *

& a,

int oldlength,

int newlength)

const;}

;

arraylist.cpp :

#include

"arraylist.h"

//不可省略

#include

using

namespace std;

template

<

class

t>

void arraylist

::checkindex

(int theindex)

const

}template

<

class

t>

inline arraylist

::arraylist

(int initialcapacity)

else

}template

<

class

t>

arraylist

::arraylist

(const arraylist

& thelist)

template

<

class

t>

t& arraylist

::get

(int theindex)

const

template

<

class

t>

int arraylist

::indexof

(const t& theelement)

const

else

return0;

}template

<

class

t>

void arraylist

::erase

(int theindex)

template

<

class

t>

void arraylist

::insert

(int theindex,

const t& theelement)

if(listsize == arraylength)

copy

(element + theindex, element + listsize, element + theindex +1)

;*(element + theindex)

= theelement;

listsize++;}

template

<

class

t>

void arraylist

::output()

const

}template

<

class

t>

void arraylist

::changelengthid

(t*& a,

int oldlength,

int newlength)

const

t* temp =

new t[newlength]

;int number =

min(oldlength, newlength)

;copy

(a, a + number, temp)

;delete

a;a = temp;

}

test.cpp :

#include

using

namespace std;

#include

"arraylist.h"

#include

"arraylist.cpp"

//兩者皆不可省略

這次讓我記憶特別深刻啊!第一次使用模板類有乙個問題一直無法解決,被困在這裡大半個小時。

模板類必須要求:

#include

"arraylist.h"

#include

"arraylist.cpp"

//兩者皆不可省略

這兩個匯入都不可省略。

還有就是對const類也有了深刻印象,非const類可以呼叫非const函式和const函式,但是const類只能呼叫const函式

C ArrayList的常用方法

add 將物件新增到arraylist的結尾處 addrange 將集合中的某些元素新增到arraylist的結尾處 insert 將元素插入arraylist的指定索引處 insertrange 將集合中的某些元素插入arraylist的指定索引處 copyto 將arraylist或它的一部分複...

C ArrayList的使用方法

1 什麼是arraylist arraylist就是傳說中的動態陣列,用msdn中的說法,就是array的複雜版本,它提供了如下一些好處 動態的增加和減少元素 實現了icollection和ilist介面 靈活的設定陣列的大小 2 如何使用arraylist 最簡單的例子 arraylist lis...

C Arraylist的sort函式的用法

arraylist的sort函式有幾種比較常用的過載 1.不帶引數 2.帶乙個引數 public virtual void sort icomparer comparer 引數comparer 型別 system.collections.icomparer 比較元素時要使用的 icomparer 實...