#pragma once
#include using namespace std;
#include template class vector
vector(const t* array, size_t size)
: _start(new t[size])
, _finish(_start)
, _endofstorage(_finish)
vector(const vector& v)//拷貝建構函式
_endofstorage = _finish;
} vector& operator=(const vector& s)//賦值運算子過載
}delete _start;
return *tmp;
} ~vector()//析構函式 }
///modify//
void pushback(const t& data)//尾插
void popback()//尾刪
void insert(size_t pos, const t& data)//指定位置插入
_start[pos] = data;
++_finish;
} void erase(size_t pos)//刪除指定位置
--_finish;
} //capacity
size_t size()const//求有效元素個數
size_t capacity()const//求總容量大小
bool empty()const//檢查是否為空
void resize(size_t newsize, const t& data = t())//重置大小
else if (newsize > oldsize&&newsize < capacity())
_finish = _start + newsize;
} else
for (size_t i = oldsize; i < newsize; i++)
delete _start;
_start = tmp;
_finish = _start+newsize;
_endofstorage = _finish + newsize;
} }//acess///
t& operator(size_t index)//過載下標運算子
const t& operator(size_t index)const
t& front()//返回第乙個元素
const t& front()const
t& back()//返回最後乙個元素
const t& back()const
void clear()//清空
void diplay()
cout << "end" << endl;
}private:
void _checkcapacity()//檢查是否有空間
else//非內建型別}}
if (_start)
delete _start;
_start = tmp;
_finish = _start + size;
_endofstorage = _finish + capacity * 2 + 3;
} }templatefriend ostream& operator<<(ostream& _cout, const vector& v)
bool ispod(const char* typename)
; for (size_t i = 0; i < 4; ++i)
return false;
}private:
t* _start;
t* _finish;
t* _endofstorage;
};
#include "vector.hpp"
void test1()
int main()
C 用模板實現順序表Vector
include以包含所需要的類檔案vector,還有一定要加上using namespace std。用模板寫函式或類都與型別無關,因此,stl中都是用模板實現容器,下面我們來介紹用模板實現順序表。pragma once include includeusing namespace std type...
模板實現順序表
模板就是實現與型別無關的 增加了 的復用性。模板分為模板函式和模板類 模板函式的格式typedef 返回型別 函式名 引數列表 class也可以用typename,意義相同。當需要資料大於所給定的資料時這時我們會考慮增容。void vector checkcapacity void test 我們再...
模板實現順序表
一 seqlist.h pragma once include include include using namespace std template class seqlist seqlist void pushback const t x 最好傳引用,不傳引用,如果t為string,傳參時拷貝...