C++STL的六大部件和联系
C++STL六大部件:仿函数,算法,容器,迭代器,适配器,空间配置器。
仿函数:实质上是一种类重载了()运算符,使之可以像函数一样调用,举个例子:
#include<iostream>
using namespace std;
class Add{
public:
int operator ()(int a,int b){
return a+b;
};
};
int main(){
Add add;
int result=add(3,5);
cout<<result<<endl;
return 0;
}
仿函数可以作为算法的参数,例如:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
class SortIt{
public:
bool operator ()(int a,int b)const{
return a>b;
};
};
int main(){
vector<int> vec={1,5,2,4,3};
sort(vec.begin(),vec.end(),SortIt());
for(auto item:vec){
cout<<item<<endl;
}
return 0;
}
算法:算法通过迭代器对容器进行操作,不依赖容器的类型。
容器:容器包含序列容器(例如list,vector等)是线性分布的,以及关联容器(例如map等)是基于平衡二叉树以及哈希表实现的。
迭代器:迭代器类似指针可以对容器内的元素进行遍历操作,容器提供的成员函数begin(),end()返回一个指向容器起始和结束的迭代器,这些迭代器是容器和算法之间的桥梁,因此,begin()和end()提供了容器元素的迭代器访问接口。
适配器:适配器可以将仿函数和函数进行包装和转换,可以对不同容器进行转换。同时可以对容器和迭代器进行适配。
空间配置器:空间配置器为容器提供内存管理服务,当容器需要分配新空间时,会调用空间配置器进行内存分配的工作。