|
说起STL,没有谁不知道,但是使用他人不是很多,用得好的人更是不多,理解他的人就更少了,这里我不讲源代码,他们实际上也帮不了我们理解STL,因为源代码永远是让人昏昏欲睡的东西。我这里只讲讲STL的组成和各部分之间的关系,这样可能会更加有效。
STL实际上是一个算法库,他由以下几个部分组成:
1。容器,适配器
2。迭代器
3。函数对象
4。算法
各部分的功能:
1。容器,适配器:无差别的储存对象或者对象指针,引用
2。迭代器:通过各种方式访问无差别的访问容器的里的内容
3。函数对象:对算法进行扩充,并定义我们自己的操作
4。算法:一些通用的无差别的算法
各部分的联系:
我们使用函数对象来扩充算法和自定义我们的操作---->算法和我们自定义的操作通过操纵迭代器来实现功能--->迭代器通过访问容器来返回我们需要的对象及其指针,引用。
实例:
class A
{
int m_i;
public:
A() : m_i(0) { }
void Add() { m_i ++; }
};
list<A*> m_list; //容器
struct Add_A //函数对象
{
void operator()(A* p) { p->Add(); }
};
m_list.push_back(new A); //对象
for_each(m_list.begin(), m_list.end(), Add_A()); //算法 |
|