10.3 c++ STL 初步】的更多相关文章

#include<Windows.h>#include<iostream>#include<algorithm>  // sort  swap   min   max   lower_bound upper_bound reverse#include<string>#include<vector>#include<queue>  //队列  先进先出#include<stack>   //   stack是先进后出#inc…
Intel Core i5-8250U,Windows 10家庭中文版,go version go1.11 windows/amd64,LiteIDE X34.1 在RUNOOB.COM的Go语言教程中,提到了两个基础开发环境:LiteIDE 和 Eclipse+GoClipse,后者前面的博文已经介绍过了,本文介绍LiteIDE的初步使用. 简单介绍: LiteIDE is a simple, open source, cross-platform Go IDE.LiteIDE 是国人(七叶-…
注:本文主要针对STL中的常用的操作进行总结 目录: 1.swap 2.sort 3.reverse 4.min,max(比较简单,暂且略过) 5._gcd 6.lower_bound && upper_bound 7.next_permutation 8.unique 1.swap (1)目的:交换两个数的值 (2)手写 代码实现: #include<iostream> using namespace std; inline void swap(int &x,int…
STL是指C++的标准模板库.(存储着一些常用的算法和容器) vector是一个不定长数组.它把一些常用的操作”封装“在vector类型内部. 例如,a是一个vector.1对元素的操作有,可以用a.size()读取它的大小,a.resize()改变它的大小,a.push_back()向尾部添加元素,a.pop_back()删除最后一个元素.2对数组的操作有:a.clear()清空,a.empty()测试是否为空. vectors是一个模板类. 它的使用声明:vetor<int>a或者vect…
一.vector 为了节省空间,有时我们会使用动态数组vector. 定义动态数组 vector<类型名>变量名 vector<int>que //定义que为一个int类型的动态数组 vector<char> a //定义 a 为一个char 类型的动态数组 vector<data> c //其中data为自定义的数据类型,可以为结构体  指令 a[i] ---- 返回动态数组中的第i个元素a.empty() ---  若动态数组为空,则返回true,否则…
vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() begin()/end() [] 支持比较运算,按字典序 pair<int, int> first, 第一个元素 second, 第二个元素 支持比较运算,以first为第一关键字,以second为第二关键字(字典序) string,字符串 size()/length() 返回字符串长度 empty()…
4.queue queue就是队列,平时用得非常多.栈的操作是只能是先进先出,与栈不同,是先进后出,与之后的deque也有区别.个人感觉手写队列有点麻烦,有什么head和tail什么的,所以说 STL大法好!!! queue的定义 #include<queue> using namespace std; queue<typename> a; queue<int> a; queue<string> a; queue<node> a; queue这个…
前文 初三下学期进入新的学习,对于前两年的学习内容因为各种原因 上课打游戏,睡觉,看视频 已经遗忘,忘记如何使用,算是重新学习一次信息学,希望能尽快将以前的内容弥补上来,争取能在CSP-2020取得一个好成绩吧 STL 1. vector vector,应该算是STL中使用较多的一种容器之一,他的用法其实数组有一点相似,但是更加优越(不然为什么STL这么强). 优越在什么地方呢?在使用数组时,因为题目要求,数组的长度决定了一定的内存,但是题目的内存限制我们在做题的时候不太容易把控,太小会RE,太…
2.set set可以看作一个集合,可以实现自动排序(升序)和去重 在许多题目中,都可以使用这个模板库,减少很多操作,例如P1923 第k小数,当然,这道题有很多奇奇怪怪的做法,分值都不同,之后会讲解 set的定义 #include<set> //头文件 using namespace std; //这条必须加 set<typename> a; //同vector一样,这里可以用不同的数据类型 set<typename> b[SIZE]; //定义set数组,有点类似v…
3.map map作为一个映射,有两个参数,第一个参数作为关键值,第二个参数为对应的值,关键值是唯一的 在平时使用的数组中,也有点类似于映射的方法,例如a[10]=1,但其实我们的关键值和对应的值只能是int类型映射到其他类型,导致做许多题的不方便,而map类型的两个参数可以是任意数据类型 map的定义 #include<map> //头文件 using namespace std; map<typename,typename> a; //注意是两个参数 map<string…
1.sort 和  lower_bound 例如     marble      https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1415 #include <stdio.h> #include <algorithm> ; using namespace std; int main() { //freopen(&qu…
1.stackstack 模板类的定义在<stack>头文件中.stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque.定义stack 对象的示例代码如下:stack<int> s1;stack<string> s2;stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素.访问栈顶,如例:s.top()判断栈空,…
一.头文件<algorithm> ①sort函数 sort使用数组元素默认的大小比较运算符进行排序,只有在需要按照特殊依据进行排序时才需要传入额外的比较函数: sort可以给任意对象排序(不一定是内置类型,由此可见sort是模板函数),前提是类型需要定义“小于”运算符,或者在排序时传入一个“小于”函数: 排序对象若存在普通数组中,则用sort(a, a+n)的方式调用: 排序对象若存在vector中,则用sort(v.begin(), v.end()). #include<algorit…
1. 排序和检索,学会使用sort排序,以及low_bound函数 Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on them. At the beginning, Raju would place the marbles one after another in ascending order of the numbers written on the…
map就是从键(key)到值(value)的映射. 因为重载了[]运算符,map像是数组的”高级版“. 例如,map<string,int>month_name 表示:”月份名字到月份编号“的映射. :(类似于 month_name["string"]=int ) 例题5-4 Problem Most crossword puzzle fans are used to anagrams--groups of words with the same letters in di…
从紫皮书过来的,但是书中内容讲的比较简洁,做一点补充笔记. 一.排序(sort函数) 头文件:<algorithm> 语法:sort(start,end,cmp); start,end必须,cmp不必须. 参数 (1)start表示要排序数组的起始地址: (2)end表示数组结束地址的下一位: (3)cmp用于规定排序的方法,可不填,默认升序. 排序方法:快排.时间复杂度为n*log2(n),执行效率较高. 默认情况递增排序(cmp参数为less<>()) 如果要实现递减排序,cm…
首先make_pair Pairs C++标准程序库中凡是"必须返回两个值"的函数, 也都会利用pair对象  class pair可以将两个值视为一个单元.容器类别map和multimap就是使用pairs来管理其健值/实值(key/va lue)的成对元素.  pair被定义为struct,因此可直接存取pair中的个别值. 两个pairs互相比较时, 第一个元素正具有较高的优先级.  例:  namespace std{  template <class T1, class…
10.2.1 STL的string 1String概念 ²  string是STL的字符串类型,通常用来表示字符串.而在使用string之前,字符串通常是用char*表示的.string与char*都可以用来表示字符串,那么二者有什么区别呢. string和char*的比较 c语言没有字符串,使用字符数组模拟字符串. ²  string是一个类, char*是一个指向字符的指针. string封装了char*,管理这个字符串,是一个char*型的容器. ²  string不用考虑内存释放和越界.…
Map是 STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于 这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上 的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处. 下面举例说明 什么是一对一的数据映射.比如一个班级中,每个学生的学号跟他的姓名就存…
本文转载来自,华中科技大学江南雨烟的C/C++专栏部分STL剖析文章,以作学习之用. [1]  [C++ STL学习之一]容器的共通能力和共通操作总结 [2]  [C++ STL学习之二]容器vector大总结 [3]  [C++ STL学习之三]容器deque深入学习 [4]  [C++ STL学习之四]容器list深入学习 [5][C++ STL学习之五]容器set和multiset [6]  [C++ STL学习之六]STL算法之for_each [7]  [C++ STL学习之七]STL…
本来这章是不打算写了的,毕竟自己学的是JAVA,C++就不想看了,但毕竟还有一点时间,就把C++也看一下吧 目录结构 10.1 C++程序基础 10.1.1 数据类型 1 基本数据类型 2 常量和变量 3 复合数据类型 4 引用和指针 10.1.2 运算符.表达式和语句 10.1.3 基本输入/输出 10.1.4 函数 1 函数定义和声明 2 函数调用 3 内联函数 4 函数的重载 10.1.5 类与对象 1 类 2 对象 3 静态成员 4 this指针 5 友元 10.2 继承与多态 1 继承…
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处. 下面举例说明什么是一对一的数据映射.比如一个班级中,每个学生的学号跟他的姓名就存在着一一…
转载自CSDN博客:http://blog.csdn.net/bat603/article/details/1456141 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有…
STL初步 提交ACM会TLE /仅以学习STL与迭代器使用 C. Cards Sorting time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Vasily has a deck of cards consisting of n cards. There is an integer on each of the cards, this…
排列(Arrangement),简单讲是从N个不同元素中取出M个,按照一定顺序排成一列,通常用A(M,N)表示.当M=N时,称为全排列(Permutation).从数学角度讲,全排列的个数A(N,N)=(N)*(N-1)*...*2*1=N!,但从编程角度,如何获取所有排列?那么就必须按照某种顺序逐个获得下一个排列,通常按照升序顺序(字典序)获得下一个排列. 例如对于一个集合A={1,2,3,},首先获取全排列a1: 1,2,3,:然后获取下一个排列a2: 1,3,2,:按此顺序,A的全排列如下…
http://blog.csdn.net/alex_xhl/article/details/37692297 List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]. Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快.List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只…
2014-01-12 Created By BaoXinjian…
 map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处. 下面举例说明什么是一对一的数据映射.比如一个班级中,每个学生的学号跟他的姓名就存在着一…
转自:http://www.kuqin.com/cpluspluslib/20071231/3265.html Map是 STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于 这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上 的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,…
STL中map用法详解 说明:如果你具备一定的C++ template知识,即使你没有接触过STL,这个文章你也应该可能较轻易的看懂.本人水平有限,不当之处,望大家辅正. 一.Map概述 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),…