对STL的增加之算法篇:foreach/数学领域库
2014-03-11 20:18
260 查看
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);
也可以提供函数对象:
[b][b]tie(a,b)=minmax(s1,s2,compme())[/b];[/b]
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_...对数正态
相关文章推荐
- STL数学算法及堆排序算法
- STL算法---数学计算算法
- 32类计算机与数学领域最为重要的算法
- 最重要的一些算法 (数学与计算机领域)
- leetcode -- 621. Task Scheduler【贪婪算法 + 数学公式化 + 逻辑证明方式】
- 蓝桥杯 - 算法提高 排列数 【STL-next_permutation求全排列】
- STL(二十四)数值算法
- 游戏开发中的数学和物理算法(1):定义点
- STL 算法
- 游戏开发中的数学和物理算法(13):点积和叉积
- STL 源码剖析 算法 stl_algo.h -- upper_bound
- BP神经网络的数学原理及其算法实现
- 20170403STL011_STL_算法和迭代器
- STL 源代码分析 算法 stl_algo.h -- includes
- C++程序中应增加STL、运算和字符串的头文件
- STL_算法_区间的比較(equal、mismatch、 lexicographical_compare)
- STL中list链表的sort算法详解
- C++ STL 算法:查找算法(2) search_n
- 数据挖掘领域十大经典算法初探
- 〖数学算法〗素性测试