c++中的STL
文章平均质量分 60
时光爱客
明天是遥远的,我们只能从当下的努力中嗅出它的味道。
展开
-
uva 10098 Generating Fast(全排列)
还是用的两种方法,递归和STL,递归那个是含有重复元素的全排列,这道题我 没有尝试没有重复元素的排列,因为从题目上并没有发现一定是有重复元素的()贴代码:#include#include#include#includeusing namespace std;int cmp(const void *a,const void *b){ return *(char *)a - *(原创 2015-07-27 14:16:05 · 750 阅读 · 0 评论 -
priority_queue用法
头文件 #include<queue>定义priority_queue<int> pq;默认是大顶堆,即按从大到小的顺序来排列。常用的操作:empty() 如果优先队列为空,则返回真pop() 删除第一个元素push() 加入一个元素size() 返回优先队列中拥有的元素的个数top() 返回优先队列中有最高优先级的元素...原创 2019-03-18 15:19:54 · 343 阅读 · 0 评论 -
upper_bound 和 lower_bound
头文件为algorithm默认非递减顺序,函数upper_bound(first, last, val)在first和last前闭后开区间进行二分查找,返回大于val的第一个元素的位置,如果元素都小于val,则返回last的位置函数lower_bound()则返回第一个大于或等于val元素的位置,如果都小于,则返回last的位置可以加greater<type>则默认为非...原创 2019-03-20 22:02:27 · 211 阅读 · 0 评论 -
string 用法
string 转换为char 数组,string s = "abc";const char *b =s_cstr();注意是const char * 类型,不能改变char转换为string :char b[10] = {'a', 'b', 'c'};string s(b);(其中原型为string s()char *)参考https://www.cnblogs...原创 2019-03-04 11:19:51 · 187 阅读 · 0 评论 -
vector 容器
参考http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.htmlvector内存分配原理vector动态增加大小时,并不是在原空间之后持续新空间(因为根本无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍另外配置一块较大的空间,然后将内容拷贝过来,然后才开始在原内容之后构造新元素,并释放原空间,因此,一旦引起空间重新配置,...原创 2019-03-03 19:55:45 · 168 阅读 · 0 评论 -
sort
之前一直用的是qsort,突然发现还是sort简单啊。。。 头文件sort(a,a+n)是对数组a[0]-a[n-1]进行排序,就是说第一个参数是开始元素,第二个参数是最后一个元素的下一个地址,默认排序是升序,对于int,string这些已经定义'了,比如对结构体排序int cmp(struct node x,struct node y){if(x.a != y.a原创 2016-05-13 08:26:56 · 299 阅读 · 0 评论 -
set 集合容器
简单学习一下set集合容器头文件#include<set>using namespace std;set<int>s(必须是有定义'<'运算符的类型 int,string)向s中加数据:s.insert(elem)插入elem之后元素默认按升序排序,集合中是没有重复元素的,每个不同的元素只存一个s.clear()清空集合s.begin()返回集...原创 2015-07-29 16:51:13 · 592 阅读 · 0 评论 -
uva 10282 Babelfish(映射)
此题让我了解了一点map容器,所以说这道题还是我看的题解,以后看的越少越好。。。。map就是映射,恩,挺好用的,还有就是gets()会读取换行符。。。getchar()也可以,但是scanf()这些格式化的就读不了。。。会存在于缓冲器内代码:#include#include#include#include#include#includeusing nam原创 2015-08-05 17:15:47 · 762 阅读 · 0 评论 -
uva 10954 Add All(哈弗曼编码)
这道题我一开始想错了,这么简单的题都wa了两发。。。我往贪心上面想了,每次都找一个最小的数相加,结果就是排序后直接往后加,还在那纳闷为何出错。。。其实这道题是哈弗曼编码问题,简直是模板题目,就是每次找两个最小的结点求和后把他们的和放到节点中去,把这两个点删除。。。用的multiset,其实和set容器差不多,就是可以存放重复的元素。。。代码:#include#include原创 2015-08-05 20:00:40 · 618 阅读 · 0 评论 -
hdu 2066 一个人的旅行 dijkstra
还是用的优先队列和vector,这道题不同的是可能或有多个起点,多个终点,加一个循环就可以了。c++交得加#include 头文件,g++则不用代码:#include#include#include#include#include#include#include#include #include#include#include#include #define MAX原创 2015-08-17 09:51:07 · 639 阅读 · 0 评论 -
map 映射
感觉map学的有点早了,前两个还没有太熟悉呢,先学点,以后继续补吧,头文件#include<map> 命名空间:using namspace std;map<int,string> map<int,int>,map<string,string> map<string,string>(暂时只会这么多)遍历的时候我现在是用下...原创 2015-07-31 14:26:53 · 828 阅读 · 0 评论 -
uva 10391 Compound Words(查找)
哈哈,这个事自己敲的,而且运用了set容器,就是查找而已,用set容器挺方便的,网上用的hash做的都好长好麻烦,我觉得hash表有点难,特别是要自己想出一个函数,不太想学这个。。。贴代码:#include#include#include#include#include#includeusing namespace std;char a[120005][20];char原创 2015-07-31 15:40:52 · 577 阅读 · 0 评论 -
是时候学一波STL了。。。
都到现在了还不会STL,赶紧学习一下。。。求下一个排列的函数:next_permutation(first,last),其中first,last都是指针变量,求的是区间[first,last)的下一个排列,升序求得,比若说1 2 3 下一个排列是1 3 2,最后一个和排列的下一个排列是第一个,即3 2 1——>1 2 3,据说效率也不怎么样,poj 1833用G++交TLE,C++过了原创 2015-07-23 11:11:41 · 706 阅读 · 0 评论 -
uva 146 ID Codes(求下一个排列)水水水
分别利用STL中的next_permutation和它的实现原理来写:next_permutation:#include#include#include#includeusing namespace std;int main(){ char a[55]; char b[55]; while(scanf("%s",a),a[0]!='#') { strcpy(b,a原创 2015-07-27 12:19:02 · 597 阅读 · 0 评论 -
nth_element用法
nth_element(start, start+n, end):可以使第n大元素处于第n位置(从0开始,其位置是下标为 n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的...原创 2019-03-22 20:05:59 · 424 阅读 · 0 评论