摘要: C 和 C++ 都不允许把真的函数作为参数传递给其他函数。取而代之,你必须传递指针给函数比如: 作为 cmpfcn 传递的实参是一个指向函数的指针,是从调用端拷贝给 qsort(值传递)。 C和C++标准库都遵循的一般准则: 函数指针是值传递 STL函数对象在函数指针之后成型,所以STL中的习惯是当 阅读全文
posted @ 2018-11-30 14:03 KidyCharon 阅读(170) 评论(0) 推荐(0)
摘要: 有时候需要把整个区间提炼成一个单独的数,比如: count 告诉你区间中有多少等于某个值的元素,而 count_if 告诉你有多少元素满足一个判断式 区间中的最小和最大值可以通过 min_element 和 max_element 获得 accumulate 提供了更加灵活的算法,但需要自己定义判断 阅读全文
posted @ 2018-11-30 11:16 KidyCharon 阅读(280) 评论(0) 推荐(0)
摘要: STL 提供了 11 个名字带有 “copy” 的算法 copy copy_backward replace_copy reverse_copy replace_copy_if unique_copy remove_copy rotate_copy remove_copy_if partial_so 阅读全文
posted @ 2018-11-30 10:13 KidyCharon 阅读(294) 评论(0) 推荐(0)
摘要: 怎么用 STL 进行忽略大小写的字符串的比较? 首先实现两个字符忽略大小写的比较: 基于 mismatch 算法,确定两个区间中第一个对应的不相同的值的位置 第二种方法 ciStringCompare 是产生一个合适的 STL 判断式:可以在关联容器中用作比较函数的函数,应用STL中名字第二长的算法 阅读全文
posted @ 2018-11-30 09:39 KidyCharon 阅读(224) 评论(0) 推荐(0)
摘要: 不是所有的算法可以用于任意区间,比如: 1. remove 需要前向迭代器和可以通过这些迭代器赋值能力,所以不能应用于输入迭代器的划分区间,也不能是 map 或 multimap,也不能是 set 和 multiset 的一些实现。 2. 很多排序算法需要随机访问迭代器,所以不能在一个 list ( 阅读全文
posted @ 2018-11-29 19:44 KidyCharon 阅读(127) 评论(0) 推荐(0)
摘要: 提防在指针的容器上使用类似 remove 的算法,容易造成内存泄漏。 选择处理动态分配指针的容器: 通过引用计数的智能指针 在调用类似 remove 的算法之前手动删除和废弃指针等 阅读全文
posted @ 2018-11-29 18:24 KidyCharon 阅读(106) 评论(0) 推荐(0)
摘要: remove 的声明: remove 接收指定它操作的元素区间的一对迭代器,不接收一个容器,所以不知道作用与哪个容器 remove 并不 “真的” 删除东西,因为它做不到 从容器中除去一个元素,唯一的方法是调用那个容器的一个成员函数,几乎都是 erase 的某种形式 remove 移动指定区间中的元 阅读全文
posted @ 2018-11-29 17:49 KidyCharon 阅读(262) 评论(0) 推荐(0)
摘要: 排序出 20 个质量最高的 Widget,一种算法叫作 partial_sort: 选出任意 20 个质量最好的 widget(不排序),使用算法 nth_element: 选出前两个最好等级的元素,使用算法 partition: 完成后,widgets.begin() 到goodEnd的区间容纳了 阅读全文
posted @ 2018-11-29 15:18 KidyCharon 阅读(154) 评论(0) 推荐(0)
摘要: 算法章: 1. 演示一些比较少见的算法使你的生活变得简单 2. 演示怎么避免算法常见的问题 STL 容器插入对象会出现的问题: 出现的问题:transform 被告知它的目的区间是从 results.end() 开始的, 而 *results.end() 没有对象,所以不存在对象的赋值 把 tran 阅读全文
posted @ 2018-11-29 13:56 KidyCharon 阅读(180) 评论(0) 推荐(0)
摘要: 使用 istreambuf_iterator : 阅读全文
posted @ 2018-11-28 19:38 KidyCharon 阅读(228) 评论(0) 推荐(0)