随笔分类 -  C++

摘要:使用stringstream对象简化类型转换C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了风格的转换,也许你首先会问:为什么要花额外的精力来学习基于的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int类型转换到字符串类型。为了正确地完成这个任务,你必须确保证目标缓冲区有足够大空间以容纳转换完的字符串。此外,还必须使用正确的格式化符。如果使用了不正确的格式化符,会导致非预知的后果。下面是一个例子:int n=10000 阅读全文
posted @ 2013-12-24 11:13 Plumrain 阅读(393) 评论(0) 推荐(0)
摘要:C++里面有一些内置函数,实现了一些常用功能。虽然我手写也能写出这些函数,但是在srm或者其他一些需要速度的地方,用内置函数的优势就能体现出来了。1、__gcd(a, b),返回a,b的最大公约数,若a为0返回b,若b为0返回a,若都为0返回0。在头文件中。2、__builtin_popcount(i),返回i的二进制形式中含有1的个数。不知道在什么头文件里。只开或都能使用。3、next_permutation和prev_permutation,两者均是用来求一个序列的排列组合,前者求下一个排列,后者求上一个。比如对string s = "abc",使用next_permu 阅读全文
posted @ 2013-12-19 11:08 Plumrain 阅读(1487) 评论(0) 推荐(0)
摘要:装载自http://blog.csdn.net/tianshuai1111/article/details/7652553一,概述 priority_queue是拥有权值观念的queue,它允许加入新元素,移除旧元素。调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。但它是一个queue所以只允许在底端加入元素,在顶端移除元素。 排序:按照权值大小顺序排序,而不是按照push 进去的顺序排序。权值高者排在前面,权值低者排在后面。 允许以任何大小顺序插入到优先队列,但取出时是按照权值大小取。 二,heap(堆)... 阅读全文
posted @ 2013-11-21 16:34 Plumrain 阅读(271) 评论(0) 推荐(0)
摘要:set,关联容器,元素不允许有重复,数据被组织成一棵红黑树,以牺牲插入和删除元素的效率换来了查找元素的高效率(O(logN))。1、初始化set st;2、begin返回第一个元素的迭代器3、end返回最后一个元素的迭代器4、clear清空5、empty判断是否为空,为空返回true6、count返... 阅读全文
posted @ 2013-09-10 11:34 Plumrain 阅读(537) 评论(0) 推荐(0)
摘要:只记载本人在ACM中常用的函数。map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力。map内部为一颗红黑树。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。1、初始化map m;2、插入元素m[1] = "aaa";m[2] = "bbb";m.insert (map :: value_type(3, "ccc")); //因为上面那种插入方法是先在m 阅读全文
posted @ 2013-09-06 14:34 Plumrain 阅读(1513) 评论(0) 推荐(0)
摘要:只记载本人在ACM中常用的函数。pair,将两个数据组合成一个数据。在其他stl(如map),函数需要传回两个值时可能会用到。1、初始化#include //pair的头文件很特别- -std::pair p();如std::pair p(3, 2.2);pair p1 = std::make_pair(3, 2.2); //注意pair有隐式的类型转换,此处pair的second元素为double类型2、常用运算符==, != , >, =, 先根据first元素判断,没有结果才根据second元素判断3、访问可以用pair.first和pair.second来访问 阅读全文
posted @ 2013-09-06 12:09 Plumrain 阅读(3931) 评论(0) 推荐(0)
摘要:只记载本人在ACM中常用的函数。vector,相当于动态数组,数组大小可变。声明vector以后,自动在内存中分配一块连续的内存空间进行数据存储。vector在内部进行插入、删除操作时间复杂度O(n)。1、初始化vector v1; //空的vectorvector v(5, 42); //vector含有5个422、常用运算符[], ==, !=, =, 均可正常使用3、back返回最后一个元素4、begin返回第一个元素的迭代器5、clear清空所有元素6、vector为空时返回真,否则返回假7、end返回最末元素的迭代器8、erase删除 iteratorerase( iterat... 阅读全文
posted @ 2013-09-06 01:22 Plumrain 阅读(2010) 评论(0) 推荐(0)
摘要:string,大小可变的字符串,有些类似于C中的字符数组。只记载本人在ACM中常用的函数,并且全部经过程序测试。1、初始化string s1;——默认构造函数s1为空串string s2(s1);——将s2初始化为与s1相同string s3("aaa");——将s3初始化为aaastring s4(3, 'b');——将s4初始化为bbb2、输入输出能用cin,cout;不能用scanf,printf。用cin读入会忽略开头所有空白字符(如空格,换行符,制表符),读取字符直至再次遇到空白字符。用getline能整行读入(不会忽略前驱空格),读入得到的字符串 阅读全文
posted @ 2013-09-05 17:01 Plumrain 阅读(598) 评论(0) 推荐(0)