Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
标准库定义了许多用于操作序列的算法,大多在algorithm
和numeric
文件中,大多数函数的原理并不复杂,但是在很多情况下可以替代手写的情况,甚至更加优秀。
这类算法函数非常多,但是他们都有共同的结构,类似的参数特性,所以非常好记忆。比如我们最经典的std::sort(beg, end, cmp)
,其中beg
和end
为首尾地址,左闭右开,既可以是C指针,也可以是STL线性容器的迭代器。cmp
是可选的函数,用于替代默认的<
比较规则。实际上大多数函数基本都是这种形式,记住一个就是记住一百个。
摘自C++ Primer附录
A. 查找算法
简单查找
find(beg, end, val)
find_if(beg, end, func1)
find_if_not(beg, end, func1)
find查找序列中第一个等于val的值,返回其指针或迭代器,在没有找到时返回end。
find_if和find相同,不过查找标准变成使谓词(布尔函数)返回true的第一个值。如查找序列中第一个奇数:
int a = *std::find(array, array+6, [](int x){
return x & 1;
});
find_if_not和find_if相反,不过返回的是第一个使值为假的函数。
count(beg, end, val)
count_if(beg, end, func1)
count和count_if返回一个值,表示序列中多少值等于val或满足func1。
all_of(beg, end, func1)
any_of(beg, end, func1)
none_of(beg, end, func1)
返回布尔值,all_of当序列全部满足时返回真,any_of在有一个满足时返回真,none_of在全部不满足时返回真。序列为空时,any_of返回假,另外两个返回真。
查找重复值
adjacent_find(beg, end)
adjacent_find(beg, end, func2)
search_n(beg, end, count, val)
adjacent_find返回第一对相邻的重复元素(使用比较或满足func为真的元素)的前面那个,若没有返回end
search_n返回一个指针或迭代器,从此位置有count个相等元素(使用比较),若没有返回end
查找子序列
search(beg1, end1, beg2, end2)
find_end(beg1