c 模板實現vector和list

2021-07-27 17:20:17 字數 2420 閱讀 8879

.h檔案

#pragma once

#include#include#includeusing namespace std;

templateclass vector

//拷貝構造

vector(const vector&v)

_size = v._size;

_capacity = v._capacity;

}//賦值運算子的過載

vector&operator = (vector&v)

//析構函式

~vector()

_size = _capacity = 0;

}size_t size()

int&back()

void print()

cout << endl;

}void pushback(const t&x)

void popback()

void pushfront(const t&x)

_data[0] = x;

++_size;

}void popfront()

--_size;

}//實現隨機位置的插入

void insert(size_t pos, const t&x)

_data[pos] = x;

++_size;

}//實現隨機位置的刪除

void erase(size_t pos)

--_size;

}protected:

void _checkcapacity()

*/delete _data;

}_data = tmp;

_capacity = _newcapacity;}}

protected:

t* _data;

size_t _capacity;

size_t _size;

};void testvector()

//介面卡

template class containter =vector>

class stack

void pop()//尾刪

t&top()//返回棧頂

t&top() const

bool empty()//是否為空

bool empty() const

size_t size() const //堆疊大小

protected:

containter _con;

};void teststack()

cout << endl;

}

list.h檔案:

#pragma once

#include#includeusing namespace std;

//定義乙個結構體

templatestruct listnode

};//帶有頭結點的雙向迴圈鍊錶

templateclass list

list(const list&l)

}list& operator=(listl)

~list()

void clear()

_head->_next = _head;

_head->_prev = _head;

}void pushback(const t&x)

void popback()

void pushfront(const t&x)

void popfront()

void insert(node *pos, const t&x)

void erase(node*pos)

t&back()//返回隊尾

t&front()//返回隊頭

size_t size()//佇列元素的個數

return count;

}void print()

cout << endl;

}protected:

node *_head;

};void testlist()

//介面卡

template < class t,class container = list>

//佇列的操作在尾部插入,在頭部刪除

class queue

void pop()

t& front()

t& back()

bool empty()

size_t size()

protected:

container _con;

};void testqueue()

cout << endl;

}

C 模板實現vector和list

模板分為模板函式和模板類。模板是為了實現泛型程式設計,所謂泛型程式設計,就是指編寫與型別無關的 比如以下的場景 我們想在同乙份 裡實現交換整型,浮點型與字元型。void swap int x,int y void swap double x,double y void swap char x,cha...

C 模板實現Vector和雙向鍊錶

define crt secure no warnings 1 include include using namespace std template class vector vector size t n,const t data vector const vector v pdata new...

C 用模板實現順序表Vector

include以包含所需要的類檔案vector,還有一定要加上using namespace std。用模板寫函式或類都與型別無關,因此,stl中都是用模板實現容器,下面我們來介紹用模板實現順序表。pragma once include includeusing namespace std type...