STL容器及泛型算法】的更多相关文章

一.顺序容器 1.容器的选择 (1) 随机访问,选vector ,deque (2) 在中间插入或者删除元素,选list (3) 在头尾插入或删除元素 , 选deque 2.list的成员函数 (1)lst.sort() (2)lst.unique()   // 会把list中相邻重复的元素删除,而unique算法只是使不重复的元素出现在序列的开始部分 3.迭代器的分类 4.迭代器能力排行 : 输入输出迭代器 < 前向迭代器 < 双向迭代器 < 随机访问迭代器 (输入输出迭代器只能用于单…
一.顺序容器 1,标准库定义了3种类型的顺序容器:vector.list和deque.它们的差别主要在于访问元素的方式,以及添加或删除元素相关操作运算代价.标准库还提供了三种容器适配器:stack.queue和priority_queue. 2,将一个容器复制给另一个容器时,类型必须匹配,包括容器类型和元素类型. vector<int> ivec; vector<double> dvec(ivec); //error list<int> ilist(ivec); //…
源地址:http://blog.csdn.net/byijie/article/details/8142859 从福州大学资料里摘下来的我现在能理解的泛型算法 algorithm min(a,b) 返回a,b中的最小值 max(a,b)返回a,b中的最大值 fill(a,a+n,val) 用val填充数组 sort(a,a+n,cmp) stable_sort(a,a+n,cmp) list.sort(cmp) 基于链表的归并排序 make_heap(a,a+n,cmp) 默认是最大堆化,即cm…
概述 大多数算法都定义在algorithm头文件中. Note:算法永远不会执行容器操作 泛型算法本身不会执行容器的操作,而是通过迭代器来访问.修改等操作 10.1 题目要求读取数据存入vector,并实现用户可以查找的值出现在vector中的次数,所以可以考虑用户查找文件中某个数出现的次数,所以可以考虑文件操作 int main(int argc, char* argv[]) { ifstream infile(argv[]); if (!infile) cerr << "can…
标准库未给容器添加大量功能,而是提供一组独立于容器的泛型算法 算法:它们实现了一些经典算法的公共接口 泛型:它们可用于不同类型的容器和不同类型的元素 利用这些算法可实现容器基本操作很难做到的事,例如查找/替换/删除特定值.重排顺序等 10.1 概述 大多数算法定义在algorithm头文件中,另外一组数值算法定义在numeric头文件中 标准库算法不直接操作容器,而是遍历两个迭代器指定的元素范围 指针就像内置数组上的迭代器,故泛型算法也可操作内置数组和指针 find算法: 作用:将范围中每一个元…
STL泛型算法 #include <iostream> #include <vector> #include <algorithm> #include <iterator> #include <numeric> #include <list> using std::cout; using std::endl; using std::vector; using std::list; bool IsOushu(const int&…
最近思考到这样一个题目:在STL的set和vector容器里存储了1亿个QQ号,编写函数删除奇数QQ号. 1. STL容器简介 首先了解一下 set 和 vector 以及其他类似的 STL 容器: 实现描述: 容器 描述 vector 向量,一个有着N个或更多连续存储的元素的数组. list 列表,一个由节点组成的双向链表,每个节点中包含一个元素. deque 双队列,一个有着N个或更多连续存储的指向不同元素的指针组成的数组. set 集合,一个由节点组成的红/黑树,每个节点包含一个元素,节点…
STL实践与分析 --容器特有的算法 与其它顺序容器所支持的操作相比,标准库为list容器定义了更精细的操作集合,使它不必仅仅依赖于泛型操作.当中非常大的一个原因就是list容器不是依照内存中的顺序进行布局的,不支持随即訪问,这样,在list容器上就不能使用随即訪问迭代器的算法,如sort等:还有其它的一些算法如:merge.remove.reverse和unique,尽管能够用在list上,但却付出了高昂的性能代价.因此标准库结合list的内部结构,编写出了更快算法: list容器特有的操作…
STL实践与分析 --泛型算法的结构 引言: 正如全部的容器都建立在一致的设计模式上一样,算法也具有共同的设计基础. 算法最主要的性质是须要使用的迭代器种类.全部算法都指定了它的每一个迭代器形參可使用的迭代器类型.比方,假设形參必须为随机訪问迭代器则可提供vector或 deque类型的迭代器,或者提供指向数组的指针.而其它容器的迭代器不能用在这类算法上. C++还提供了另外两种算法模式:一种模式由算法所带的形參定义;还有一种模式则通过两种函数命名和重载的规范定义. 一.算法的形參模式 大多数的…
快速排序基本思想是,对待排序序列进行划分(Partition),一次划分,选择一个元素作为枢轴,然后将所有比枢轴小的元素放到枢轴的左边,将比枢轴大的元素放到枢轴的右边.然后对该枢轴划分的左右子序列分别再进行划分,如此递归.Partition是一个非常重要的概念,因为它只需要O(n)的时间复杂度就可以将待排序序列划分为两块具有大小关系的区间,可以根据这一特性求解待排序序列中最大的k个数.第k大的数等类似问题. 就平均时间而言,快速排序是目前被认为是最好的一种内部排序方法,其平均时间是O(nlogn…