八.算法和容器中存在的功能相同的函数: 8.1.array: 8.1.1.fill. 1.在array中:void fill (const value_type& val); 2.在algorithm中: template <class ForwardIterator, class T> void fill (ForwardIterator first, ForwardIterator last, const T& val); 8.1.2.swap. 1.在array中: vo…
STL实践与分析 --容器特有的算法 与其它顺序容器所支持的操作相比,标准库为list容器定义了更精细的操作集合,使它不必仅仅依赖于泛型操作.当中非常大的一个原因就是list容器不是依照内存中的顺序进行布局的,不支持随即訪问,这样,在list容器上就不能使用随即訪问迭代器的算法,如sort等:还有其它的一些算法如:merge.remove.reverse和unique,尽管能够用在list上,但却付出了高昂的性能代价.因此标准库结合list的内部结构,编写出了更快算法: list容器特有的操作…
试题 算法训练 sign函数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定实数x,输出sign(x)的值. sign(x)是符号函数,如果x>0,则返回1:如果x=0,则返回0:如果x<0,则返回-1. 输入格式 一行一个实数x. 输出格式 一行一个整数表示答案. 样例输入 -0.0001 样例输出 -1 数据规模和约定 |x|<=10000,输入数据精度最多达到4位小数. package 第十次模拟; import java.util.Scanner; pub…
试题 算法训练 二元函数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 令二元函数f(x,y)=ax+by,a和b为整数,求一个表达式S的值. 只有满足以下要求的表达式才是合法的: 1.任意整数x是一个合法的表达式: 2.如果A和B都是合法的表达式,则f(A,B)也是一个合法的表达式. 输入格式 第一行两个数a和b: 第二行一个字符串S表示要求的表达式. 输出格式 一行一个数表示表达式S的值. 样例输入 1 2 f(1,f(1,-1)) 样例输出 -1 数据规模和约定 S的长…
一.顺序容器 1,标准库定义了3种类型的顺序容器:vector.list和deque.它们的差别主要在于访问元素的方式,以及添加或删除元素相关操作运算代价.标准库还提供了三种容器适配器:stack.queue和priority_queue. 2,将一个容器复制给另一个容器时,类型必须匹配,包括容器类型和元素类型. vector<int> ivec; vector<double> dvec(ivec); //error list<int> ilist(ivec); //…
现在我们来看看变易算法.所谓变易算法(Mutating algorithms)就是一组能够修改容器元素数据的模板函数,可进行序列数据的复制,变换等. 我们现在来看看第一个变易算法:元素复制算法copy.该算法主要用于容器之间元素的拷贝,即将迭代器区间[first,last)的元素复制到由复制目 标result给定的区间[result,result+(last-first))中.下面我们来看看它的函数原型: template<class InputIterator, class OutputIte…
一.顺序容器 1.容器的选择 (1) 随机访问,选vector ,deque (2) 在中间插入或者删除元素,选list (3) 在头尾插入或删除元素 , 选deque 2.list的成员函数 (1)lst.sort() (2)lst.unique()   // 会把list中相邻重复的元素删除,而unique算法只是使不重复的元素出现在序列的开始部分 3.迭代器的分类 4.迭代器能力排行 : 输入输出迭代器 < 前向迭代器 < 双向迭代器 < 随机访问迭代器 (输入输出迭代器只能用于单…
1.find(); find()算法的作用是在指定的一段序列中查找某个数,包含三个参数,前两个参数是表示元素范围的迭代器,第三个参数是要查找的值. 例:fing(vec.begin(), vec.end(), val); //在vec中查找值val,该val可以是数字.字符串. 2.count(): count()算法的作用是查看给定序列中给定值出现的次数,同样包含三个参数,前两个参数是表示元素范围的迭代器,第三个参数是要查找的值. 例:count(vec1.begin(), vec1.end(…
首先要感谢http://blog.csdn.net/v_july_v/article/details/7041827以及http://blog.chinaunix.net/uid-27164517-id-3280128.html两篇博文的作者,参考这两篇博文才对KMP算法有了初步认识,本文的一些内容也是来自于这两篇之中.KMP算法与BF算法的优略.回溯不回溯这些问题本文不作说明,而主要说明next函数(通常保存为一个next数组)的意义.这正是KMP算法难于理解的地方. 为了方便起见,在不会起歧…
一.count函数 algorithm头文件定义了一个count的函数,其功能类似于find.这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果. 编写程序读取一系列int型数据,并将它们存储到vector对象中,然后统计某个指定的值出现了多少次. 核心代码: cout<<count(ivec.begin() , ivec.end() , searchValue) 具体实现: //读取一系列int数据,并将它们存储到vector对象中, //然后使用algorithm头文件中定…