stl的全称为Standard Template Library,即为标准模板库,它主要依赖于模板,而不是对象,所以你需要对这个模板进行实例化,选择你要使用的类型。
模板是一个怎样的东西呢,可以看下这个TOJ5250
题意就是让我去实现一个不定长可以放任意内容的数组。
我的实现代码
#include <iostream> #include <malloc.h> using namespace std; template<typename T> class Vector{ private:T *p; int size; int n; public: Vector() {p=(T*)malloc(10*sizeof(T)); size=10; n=0;} void Push_back(const T a){ if(n==size){p=(T*)realloc(p,10*sizeof(T));size+=10;} *(p+n)=a; n++; } typedef T* Iterator; T* Begin() {return p;} T* End() {return p+n;} }; int vector, deque, list, forward_list, array, string;//禁止使用vector, list等 int main() { Vector<int> a; for(int i=1;i<=5;i++) a.Push_back(i); Vector<int>::Iterator it; for(it=a.Begin();it!=a.End();++it) { cout<<*it<<endl; } }
里面我用了一些类的东西,暂且跳过。
void Push_back(const T a){ if(n==size){p=(T*)realloc(p,10*sizeof(T));size+=10;} *(p+n)=a; n++; }
看下这个部分好了