STL定义了一些适用于所有容器类的非成员函数
### 另一方面,即使有执行相同任务的非成员函数,STL有时也会也会定义一个成员函数。
### 这是因为对有些操作来说,类的特定算法的效率比通用算法高。
### 但通用算法能够操作两个类型不同的容器的内容
三个代表性的STL函数:
- for_each(argument1, argument2, argument3)
- argument1和argument2是定义容器中区间的迭代器,argument3是特定的函数对象
- for_each(...)函数将被指向的函数应用于容器区间中的各个元素
- 要求函数不能修改容器的元素
- random_shuffle(argument1, argument2)
- argument1与argument2是指定区间的迭代器参数
- 函数使区间中的元素随机排列
- 使用该函数要求容器类允许随机访问(如vector)
- sort(argument1, argument2{, argument3})
- sort(...)也要求容器类支持随机访问
- argument1和argument2是指定区间的迭代器参数
- 该函数使用为存储在区间中的类型元素定义的<运算符
- 如果容器元素是用户定义的对象,则要使用sort(...)必须自定义operator<(const <...> &, const <...> &)函数
- ### argument3可选,它是函数对象参数,函数特征可为(const <...> &, const <...> &),
- ### 要求返回bool值,用于排序,true表示顺序正确,false则使其顺序颠倒