对STL的增加之算法篇:foreach/数学领域库

来源:互联网 发布:谷嫂淘宝同款排除王 编辑:程序博客网 时间:2024/04/26 20:17

foreach 

1、
作用:代替for(int i=0;i<10;++i)或for(p=c.begin();p!=c.end();++p)
优点:
1)foreach库使用如下2个宏提供类似的序列变量,不需要迭代器,不需要新的函数对象;

   BOOST_FOREACH;

  BOOST_REVERSE_FOREACH;
使用前提:序列式稳定的

string str("zpp");

BOOST_FOREACH(char &c,str);//遍历容器

{

cout<<c<<",";  结果z,p,p

}  


2)与手写循环同样高效
例如:

vector<int>v=(list_of(1),2,3,4);

BOOST_FOREACH(int x,v);//遍历vector容器

{

cout<<x<<",";  结果1,2,3,4

}

string str("zpp");

BOOST_FOREACH(char &c,str);//遍历容器

{

cout<<c<<",";  结果z,p,p

}  

-------------------------------------------------------------------------------------------------

Minmax()

作用:

对STL中的min/max,min_element/max_element的增强,一次处理中同时获得最大最小值(同时返回min,max)。

效率提高

例如:

int a,b;

tie(a,b)=minmax(5,3);

也可以提供函数对象:

tie(a,b)=minmax(s1,s2,compme())

Min_element()算法组:

first_min_element()

last_min_element()

first_min_first_max_element()

first_min_last_max_element()

minmax_element()等等

----------------------------------------------------------------------------------------------------------

数学与数字

数学领域的4个库

integer:整数处理的类:例如编译期计算min,max,log2等

rational:有理数(分数)

              例如:

             rational<int>a(31415,10000);//分数3.1415

              rational<int>pi(22,7);圆周率

             cout<<a.numerator();分子  只读不写

             cout<<a.denominator();分母  只读不写

crc:循环冗余校验码

random:伪随机数的实现,产生高质量的随机数

             产生随机数的速度:高---->低

            随机数质量和内存:低---->高

什么是伪随机数发生器?

并不是真正的随机数,而是一个非常大的循环周期

(例如mt19937的循环周期2^19937-1),真随机数无法用纯软件产生。

提供15个分布,部分如下:

uniform_01 [0,1]实数连续均匀分布

uniform_real  [min,max]上的实数连续均匀分布

bernoulli_distribution  伯努利分布

binomial_distribution 二项分布

cauchy-...          柯西分布

gamma_... 伽马分布

poisson_...

geometric_...  几何

triangle_... 三角

exponential_...指数

normal_...正态

lognormal_...对数正态









0 0
原创粉丝点击