C++STL整理】的更多相关文章

STL整理 vector #include<bits/stdc++.h> #define go(i,a,b) for(int i=a;i<b;i++) using namespace std; vector<,);//赋初值,10个元素全为1 int main() { cout<<"b="; go(i,,b.size()) cout<<b[i]<<" ";cout<<endl; vector&l…
sort 升序排列: iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素. iterator upper_bound( const key_type &key ): 返回一个迭代器,指向键值 第一个>key的元素. 降序排列: iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值<= key的第一个元素. itera…
转载请注明出处,部分内容引自李煜东<算法竞赛进阶指南> 前置知识:    C++.C语言入门 Set是什么 Set是C++STL中提供的容器,set是数学上的集合——具有唯一性,即每个元素只出现一次,而multiset则是可重集,两者的内部实现是一棵红黑树,它们支持的函数基本相同 Set的相关操作 头文件 #include<set> 声明: 像这样: set<类型>名称: 比如: set<int>s; set<vector<int> >…
一.一般介绍 STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分.该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法.为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性. 从逻辑层次来看,在STL中体现了泛型化程序设计的思想(generic programming…
重要知识点 1.基础知识 #include<bits/stdc++.h> //万能头文件 #include< algorithm > //包含sort函数 运用sort实现多关键字排序 bool cmp(Element a,Element b){ if(a.s1!=b.s1){ return a.s1>b.s1;//根据关键字s1降序 else //这里可以继续嵌套判断语句实现多关键字排序 return a.s2<b.s2;//根据关键字s2升序 } sort(list…
向量(vector) <vector> 连续存储的元素<vector> Vector<int>c; c.back()    传回最后一个数据,不检查这个数据是否存在. c.clear()     移除容器中所有数据. c.empty()   判断容器是否为空. c.front()     传回地一个数据. c.pop_back() 删除最后一个数据. c.push_back(elem)  在尾部加入一个数据. c[i] 等同于 c.at(i); 列表(list) <…
转载请注明出处,部分内容引自李煜东<算法竞赛进阶指南> 前置知识:    C++.C语言入门 Map是什么 Map是从键(key)到值(value)的映射,其内部实现是一棵以key为关键码的红黑树 Map的相关操作 头文件 #include<map> 声明: 像这样: map<key的类型,value的类型>名称: 比如: map<long long,bool>mp; map<string,int>mp; map<pair<int,i…
#include<iostream> #include<list> #include<iterator> #include<algorithm> using namespace std; list<int> p; int ii, jj; bool op(int x) /*这个很重要*/ { return x <= ii; } int main() { int n; while(cin >> n) { for(int i = 0;…
目录 C++ 常用STL整理 容器和配接器 list(链表) stack(栈) queue(队列) priority_queue(优先队列) set(集合) vector(向量) map&&pair(关联) 常用算法 #include<algorthm> 算是一个为了课程内容服务的记录,关于算法和数据结构的内容,原本想着网上搜罗搜罗就能找到相对应的,干脆自己做个简略的个人记录.将学过的没学过的做个稍微的整理. C++ 常用STL整理 容器和配接器 list(链表) list可以…
震惊,新的功能:可以按Ctrl + F 进行关键字查询. \(update\) on 10.26:把这两个月的日报也加入进去了,并且修复了几个错误. 本文会把小编用过的博客和比较好的博客放在这里. 可能分类不是很好. \(update\) on 10.9: 突然发现未公开,现在公开了. 关于我原来的博客,给一个博客链接吧. 图论 用最通俗的语言让你学会网络流 SPFA算法教学 初探tarjan算法(求强连通分量) dijkstra 详解 最大流与Dijkstra做费用流 浅析最近公共祖先(LCA…
震惊,新的功能:可以按Ctrl + F 进行关键字查询. \(update\) on 10.26:把这两个月的日报也加入进去了,并且修复了几个错误. 本文会把小编用过的博客和比较好的博客放在这里. 可能分类不是很好. \(update\) on 10.9: 突然发现未公开,现在公开了. 关于我原来的博客,给一个博客链接吧. 图论 用最通俗的语言让你学会网络流 SPFA算法教学 初探tarjan算法(求强连通分量) dijkstra 详解 最大流与Dijkstra做费用流 浅析最近公共祖先(LCA…
这里主要介绍颠倒.旋转.随机排列和分类4中常见的整理算法 1.颠倒(反转) void reverse(_BidIt _First, _BidIt _Last) _OutIt reverse_copy(_BidIt _First, _BidIt _Last,_OutIt _Dest) 2.旋转 _FwdIt rotate(_FwdIt _First, _FwdIt _Mid, _FwdIt _Last) _OutIt rotate_copy(_FwdIt _First, _FwdIt _Mid,…
Intro 简单整理了一些关于 C++ STL 的注意点. 虽然大多数东西可以手写不过某些东西最好少造轮子,善用 STL 可以节约很多考场时间,简化实现. 当然是时空限制和功能足够的前提下. Tips 开 bool 数组是如果发现空间不是很对可以考虑 std::bitset 或 std::vector<bool>.不过仅仅是单次访问 std::bitset 没有 bool 数组快. 常数较大的一些 STL 容器:std::stack/std::queue/std::deque/std::lis…
C++中的STL大法整理 由于碰到了一些不知道怎么用的STL vector vector是数组的STL,对于普通数组的优势就在于,可以动态地变化数组长度.那么面对一些数据范围非常大而又可以边读入边处理的题,就可以避免爆内存. 进行vector操作前应添加头文件#include <vector> 常见初始化 法零: vector<int>a; //直接开,不花里胡哨的 法一: vector<int>a(10); //开有10个元素的数组 法二: vector<int…
百度百科 STL是Standard Template Library的简称,中文名标准模板库,惠普实验室开发的一系列软件的统称.从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合.STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件.STL现在是C++的一部分,因此不用安装额外的库文件. 在C++标准中,STL被组织为下面的13个头文件:<algorithm>.<deque>.<fun…
前言: 之前做题二分都是手动二分造轮子,用起来总是差强人意,后来看到STL才发现前辈们早就把轮子造好了,不得不说比自己手动实现好多了. 常用操作 1.头文件 #include <algorithm> 2.使用方法 1.binary_search:查找某个元素是否出现.a.函数模板:binary_search(arr[],arr[]+size ,  indx)b.参数说明:    arr[]: 数组首地址    size:数组元素个数    indx:需要查找的值c.函数功能:  在数组中以二分…
介绍: list容器是一种序列式容器,它是STL实现的双向链表,与vector相比它可以实现快速的插入和删除,但是不能够快速的随机访问. 头文件: #include <list> 构造函数: list() 声明一个空列表: list(n) 声明一个有n个元素的列表,每个元素都是由其默认构造函数T()构造出来的 list(n,val) 声明一个由n个元素的列表,每个元素都是由其复制构造函数T(val)得来的 list(first,last) 声明一个列表,其元素的初始值来源于由区间所指定的序列中…
map容器: 继上一篇 ,Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的.至于二叉树这种数据结构,本人暂时没有任何了解.在map这个容器中,提供一种“键- 值”关系的一对一的数据存储能力.其“键…
一.什么是标准模板库(STL)? 1.C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板,我们可以调用这些模板来定义一个具体的类:与之前的自己手动创建一个函数模版或者是类模板不一样,我们使用了 STL就不用自己来创建模板了,这些模板都定义在标准模板库中,我们只需要学会怎么使用这些类模板来定义一个具体的类, 然后能够使用类提供的各种方法来处理数据. 2.STL六大组件:容器(contain…
第二章:C++泛型机制的基石--数据类型表 2.1 类模板的公有数据类型成员 2.1.1 类的数据类型成员   C++类中不仅可以定义数据成员和函数成员,而且还可以定义数据类型成员.在泛型设计中,类的数据类型成员是一个常用的感念.所谓类的数据类型成员,就是在一个类中使用typedef定义一个已知数据类型的别名.例如: typedef long double LDBL   在C++中,这种在类模板中定义的数据类型也称nested type(嵌入式类型).既然nested type与字段.方法都属于…
1.vector 动态数组,方便的动态扩容,方便的变量初始化(int类型默认初始化为0,bool默认初始化为false),可以用来实现邻接表(结点数太多的图). 头文件 #include<vector> using namespace std; 定义 //typename 可以是基本数据类型,可以是其它标准stl容器,可以是自定义结构体 vector<typename> name; vector<int> v1; vector<vector<int>…
1.vector c++STL中的可变长度数组,主要支持操作有:建立,添加到末尾,返回长度,调整大小,定义迭代器及对迭代器的具体操作.具体如下: 1.建立一个元素类型为int的可变长度数组v,最开始N个元素,初始值为i(默认为零,N,i可省略): #include<vector> vector<int> v(N,i); 2.将元素a插入到v的尾部,并增加数组长度: v.push_back(a); 3.返回数组v的长度: v.size(); 4.重新调整数组大小为n,如果n比原大小小…
//归并排序递归方法实现 #include <iostream> #include <cstdio> using namespace std; #define maxn 1000005 int a[maxn], temp[maxn]; long long ans; void MergeSort(int a[], int l, int mid, int r) { ; int i = l, n = mid, j = mid, m = r; while ( i<n &&am…
/ *最近ACM比赛,用到的时候忘记成员函数了,贼尴尬,给以后比赛做下准备 */ LIST: 构造函数 list<int> c0; //空链表 list<int> c1(3); //建一个含三个默认值是0的元素的链表 list<int> c2(5,2); //建一个含五个元素的链表,值都是2 list<int> c4(c2); //建一个c2的copy链表 list<int> c5(c1.begin(),c1.end()); ////c5含c1一…
S T L Sting: << 判断拼音序 size length 字符串长度 str[n] 代表字符串中的一个字符 可用作左值 string::size_type 用于表示字符串长度计量 #include <cctype> 只控制字符 isalpha(); 字符串中是否为字母 ispunct(s[n]) 检查某一个字符是否为标点符号 Isalnum() 检查某一个子否是字母或数字 Iscntrl() 是否为控制字符 Isdigit() 是否为数字 Isxdigit() 是否为十六…
------------更多Bitset的运用,请看这里http://www.cnblogs.com/hua-dong/p/8519739.html. 由于在学cdq分治,看到了这道题.先来看一道题目 (hihocoder1513): 问题:给出每个人(n<=100000)的五门学科成绩,求出所有人:五门学科名次都比自己靠前的同学的人数   学过cdq分治的应该知道,这就是个五维偏序,只要一维排序,二维分治,然后树套树套树就能轻松搞定了...去他妈的 请拉到最下面,先感受一下代码.开始的确想过用…
概念: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列.如果这组数有n个,那么全排列数为n!个. 比如a,b,c的全排列一共有3!= 6 种 分别是{a, b, c}.{a, c, b}.{b, a, c}.{b, c, a}.{c, a, b}.{c, b, a}. 使用方法 这里先说两个概念:“下一个排列组合”和“上一个排列组合”,对序列 {a, b, c},每一个元素都比后面的小,按照字典序列,固…
priority_queue 优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序,每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储. 定义: priority_queue<int> p;//最大值优先,是大顶堆一种简写方式 priority_queue<int,vector<int>,greater<int>>q1;//最小值优先,小顶堆 priority_queue<int,v…
pair pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同.如果一个函数有两个返回值的话,如果是相同类型,就可以用数组返回,如果是不同类型,就可以自己写个struct ,但为了方便就可以使用 c++自带的pair ,返回一个pair,其中带有两个值.除了返回值的应用,在一个对象有多个属性的时候 ,一般自己写一个struct ,如果就是两个属性的话,就可以用pair 进行操作.pair 可以省的自己写一个struct .如果有三个属性的话,其实也是可以用的pair 的 ,极端的写…
SET set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序.应该注意的是set中数元素的值不能直接被改变. set常用操作: 1. begin()--返回指向第一个元素的迭代器 2. clear()--清除所有元素 3. count()--返回某个值元素的个数 4. empty()--如果集合为空,返回true 5. end()--返回指向最后一个元素的迭代器 6. equal_range()--…