摘要:
STL 头文件中都有什么,这里有一个快速概要: 1. 几乎所有的容器都在同名的头文件里,比如,vector 在<vector> 中声明,list 在 <list> 中声明等。例外的是<set>声明了set 和 multiset,<map> 声明了 map 和 multimap 2. 除了四个算法外, 阅读全文
摘要:
假设有一个 vector<int>,想要去掉 vector 中的值小于 x 而出现在至少和 y 一样大的最后一个元素之后的所有元素 可以使用的方法: 找到 vector 中一个值最后一次出现需要用逆向迭代器调用 find 或 find_if 的某种形式 去掉元素需要使用 erase 或 erase- 阅读全文
摘要:
STL 函数对象——化妆成函数的对象——传递给算法所产生的代码比一般传递真的函数高效 假设需要以降序排序一个 double 的 vector,最直接的 STL 方式是通过 sort 算法和 greater<double> 类型的函数对象: 避开函数对象而使用真的函数,一个真的内联函数: 其中,gre 阅读全文
摘要:
如果区间有序,可以使用对数时间的算法,binary_search、lower_bound、upper_bound 和 equal_range 如果迭代器没有划分一个有序区间,只能用线性时间的算法 count、count_if、find 和 find_if cout 回答: 是否存在这个值,如果有,那 阅读全文
摘要:
有些容器拥有和 STL 算法同名的成员函数。 关联容器提供了 count、find、lower_bound、upper_bound 和 euqal_range list 提供了 remove、remove_if、unique、merge 和 reverse 大多数时候应该用成员函数代替手写算法,这样 阅读全文
摘要:
每一个算法接受至少一对用来指示将被操作对象区间的迭代器,比如,min_element 可以找出此区间中的最小的值,而 accumulate 则对区间内的元素作某种形式的整体求和运算,partition 将区间内的元素分割为满足和不满足某某判决条件的两个部分。算法执行时,他们进行检查指示给它的区间中的 阅读全文