STL用法很通俗易懂,但是,想深入了解STL源码的实现,以为以后设计自己的模板类。
首先应了解和掌握模板类的设计方法,然后推荐《C++模板元编程》、《STL源码剖析》两本书,博大精深的STL!这些书电子版在jask中都能下到。
1. 类模板和STL
STL是C++的标准模板库,其源码编程完全依赖模板实现。
类模板是能根据不同参数建立不同类型成员的类。
2. 类模板的定义
template<模板类参数>
class 类名
{
成员名;
};
根据需要参数可以多个。
3. STL是模板类应用的一个最好的开源实例
在掌握STL的基本用法的基础上去理解模板类的设计会更加深刻,在掌握模板类设计的基础上,可以设计出自己需要的类似STL的容器。
比如给出的栈模板例子。
4. 一个简单的栈模板实例
// template of stack
template
class Stack
{
public:
Stack(int size=10);
~Stack();
bool IsFull();
bool IsEmpty();
bool Push(const T&);
T Pop();
private:
int m_size;
int m_top;
T *m_space;
};
template
Stack::Stack(int size)
{
this->m_size = size;
m_space = new T(size);
m_top = size;
}
template
Stack::~Stack()
{
delete []m_space;
}
template
bool Stack::IsFull()
{
return m_top == 0;
}
template
bool Stack::IsEmpty()
{
return m_top == m_size;
}
template
bool Stack::Push(const T&element)
{
if(!IsFull())
{
m_space[--m_top] = element;
return true;
}
return false;
}
template
T Stack::Pop()
{
return m_space[m_top++];
}
5. 总结
模板和stl相辅相成,学习的时候,注意实例开发和模板类构件的积累。
模板类开发是C++构件开发的重要技术手段。