1,is_permutation 函数,判断其中一个序列是不是另外一个序列的全排列. 包括四个参数,前两个是第一个数组需要判断的起始位置和终止位置.后两个是第二个数组需要判断的起始位置和终止位置. #include<bits/stdc++.h> using namespace std; # define ll long long # define inf 0x3f3f3f3f ; int main(){ ]={,,,,,,,}; ]={,,,,,,,}; ]={,,,,,,,}; ]={,,,…
侯捷老师在<STL源码剖析>中说到:了解traits编程技术,就像获得“芝麻开门”的口诀一样,从此得以一窥STL源码的奥秘.如此一说,其重要性就不言而喻了.      之前已经介绍过迭代器,知道了不同的数据结构都有自己专属的迭代器,不同的迭代器也有不同的特性,由于算法的接口是统一的,通过迭代器的不同属性,算法自动选择正确的执行流程,在完全任务的同时,也尽可能提高算法的执行效率.那算法如何获知迭代器的属性呢?这一光荣的任务就是traits完成的.在STL实现中,traits编程技术得到大量的运用…
//****************************基本算法***************************** /* stl算法总览,不在stl标准规格的sgi专属算法,都以 *加以标记 算法名称              算法用途         质变                   所在文件 accumulate          元素累计            否                   <stl_numeric.h> adjacent_differenc…
// //  set map.cpp //  笔记 // //  Created by fam on 15/3/23. // // //---------------------------15/03/23---------------------------- //set { /* set概述: 1:所有的元素都会被自动排序, 2:所有的元素只有"键"没有"值" 或者说他们的"值"就是"键" 3:不允许出现两个相同的键值 4…
稍微看了看刘汝佳的白皮书,“实用主义”的STL实在是香到我了,而且在实验室大佬的推荐下我开始了stl的学习. 每篇附带一个题目方便理解,那行,直接开始. 毕竟是实用主义,所以就按照给的题目的例子来理解需要用到的函数,算法题目里用的多的函数也会拿出来晒一晒,其他就无所谓啦. 栈(stack) push.pop.size.empty push 入栈一个元素 pop 出栈一个元素,pop无返回值 top 取栈顶元素 size 查看元素个数 empty() 当队列为空时,返回true (来一张直观的图)…
//---------------------------15/04/05---------------------------- /* 空间配置器概述: 1:new操作包含两个阶段操作 1>调用::operator new配置内存(底层使用malloc来申请内存). 2>调用函数的构造函数,构造对象内容. delte和new一样,先调用析构函数,再调用::operator delete释放内存. 2:为了效率,stl把两个阶段分开来. 1>内存配置操作: alloc::allocate…
//---------------------------15/03/31---------------------------- //lower_bound(要求有序) template<class ForwardIterator, class T> inline ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T& value) { return __lower_bound…
//---------------------------15/03/27---------------------------- //算法 { /* 质变算法:会改变操作对象之值 所有的stl算法都作用在由迭代器[first,last)所标示出来的区间上.质变算法 就是 运算过程会更改区间内的元素内容 非质变算法:和质变算法相反 */ /* stl算法的一般形式 1>所有的泛型算法的前两个参数都是一对迭代器,通常称为first和last,用以标示算法的操作区间 2>stl习惯采用前闭后开区间…
//---------------------------15/03/26---------------------------- //hash_set { /* hash_set概述: 1:这是一个hash版本的set,RB_tree版本的set有自动排序功能, 而hash_set没有这个功能. 2:hash_set的使用方式,与set完全相同. */ //class template<class Value, class HashFcn = hash<Value>, class Eq…
//---------------------------15/03/24---------------------------- //hashtable { /* 概述: sgi采用的是开链法完成hashtable的,也就是用链表来存储映射到相同位置的元素. */ //node(节点) template<class Value> struct __hashtable_node { __hashtable_node* next; Value val; }; //bucket维护的linked…