STL算法概述

来源:互联网 发布:云计算工程师 编辑:程序博客网 时间:2024/06/13 11:13

1.头文件

#include<algorithm>

其他常用头文件:#include<numeric>;#include<functional>

2.概览

STL算法采用覆盖模式而非安插模式。

尾词_if表判断,尾词_copy表复制

STL分类:

  • 非变动性算法(P324)
  • 变动性算法(P326)
  • 移除性算法(P327)-不可用于关联性容器
  • 变序性算法(P327)-不可用于关联性容器
  • 排序算法(P328)-不可用于关联性容器(例如:set,map等)或不带随机存取迭代器的容器(例如:list)
  • 已序区间算法(P331)-
  • 数值算法
for_each()和transform()的区别:

  • for_each()接受一项操作,可以改变其参数值,参数必须以by reference方式传递。
void squar(int &elem){elem = elem* elem;}

  • transform()运用某种操作,改操作返回被改动后的参数。
int squar(int elem){return elem * elem;}


自定义辅助函数:

#include <iostream>#include <vector>#include <deque>#include <list>#include <set>#include <map>#include <string>#include <algorithm>#include <iterator>#include <functional>#include <numeric>template <class T>inline void PRINT_ELEMENTS(const T&coll, const char* optcstr=" "){typename T::const_iterator pos;std::cout<<optcstr;for(pos=coll.begin();pos!=coll.end();++pos){std::cout<<*pos<<' ';}std::cout<<std::endl;}template<class T>inline void INSERT_ELEMENTS(T& coll, int first, int last){for( int i=first; i<=last; ++i){coll.insert(coll.end(),i);}}

原创粉丝点击