C++知识总结
专栏主要是学习C++的一些知识总结,希望通过自己的总结能够更加牢固地掌握知识,也希望能够帮助到其他人。这些总结有些来自网络,首先对相关博主表示感谢!我转载的文章基本上都加以声明,如果未声明请联系。
木顶思上
发表是最好的记忆。
展开
-
面试题整理-斐波那契数列
这个很好。其实也就是f(0) = 0, f(1) = 1. 然后 f(n) = f(n-1) + f(n-2);测试链接点击打开链接。求解:#include #include long long a[71]; void init(void) { a[0] = 0; a[1] = a[2] = 1; for (int i = 3;转载 2016-09-02 22:52:52 · 1610 阅读 · 0 评论 -
迅雷2014C++研发笔试卷C解题分析
试卷链接见迅雷2014C++研发笔试卷C。1、下列运算符中,在C++语言中不能重载的是:A.* B.>= C.:: D. delete分析:在C++中,sizeof运算符,.成员运算符,.*成员指针运算符,::作用域解析运算符以及?:条件运算符不能被重载,因此答案选C。2、下面关于多态性的描述,错误的是:C++语言的多态性分为编译时的多态性和运行时的多原创 2016-08-28 14:43:04 · 2203 阅读 · 0 评论 -
集合的子集
题目链接:集合的子集题目描述请编写一个方法,返回某集合的所有非空子集。给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。测试样例:[123,456,789]返回:{[789,456,123],[789,456],[789,123],[789]原创 2016-08-23 23:08:00 · 1617 阅读 · 0 评论 -
字符串和数字之间的相互转换总结
最近刷题有用到字符串和整形数字之间的转化,特地总结一下。int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X。string前后加上双引号,告诉编译器把它当成一串字符来解原创 2016-08-18 23:30:36 · 6989 阅读 · 0 评论 -
动态规划:从新手到专家
出处:Dynamic Programming – From Novice to Advanced前言我们遇到的问题中,有很大一部分可以用动态规划(Dynamic Programming,简称DP)来解。 解决这类问题可以很大地提升你的能力与技巧,我会试着帮助你理解如何使用DP来解题。 这篇文章是基于实例展开来讲的,因为干巴巴的理论实在不好理解。注意:如果你对于其转载 2016-08-17 23:20:33 · 1232 阅读 · 0 评论 -
寻找Coder——去哪儿2015研发工程师笔试题
题目描述:(题目链接:寻找Coder)请设计一个高效算法,再给定的字符串数组中,找到包含"Coder"的字符串(不区分大小写),并将其作为一个新的数组返回。结果字符串的顺序按照"Coder"出现的次数递减排列,若两个串中"Coder"出现的次数相同,则保持他们在原数组中的位置关系。给定一个字符串数组A和它的大小n,请返回结果数组。保证原数组大小小于等于300,其中每个串原创 2016-08-14 22:43:06 · 950 阅读 · 0 评论 -
不同类型在不同位数机器的平台下长度
不同类型在不同位数机器的平台下长度原创 2016-08-13 11:08:41 · 1968 阅读 · 0 评论 -
罪犯转移问题思考——2016百度编程题
C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行值之和不超过t,问有多少种选择的方式? 题目链接见罪犯转移。输入描述:第一行数据三个整数:n,t,c(1≤n≤2e5,0≤t≤1e9,1≤c≤n),第二行按入狱时间给出每个犯人的罪行值ai(0≤ai原创 2016-08-10 21:22:16 · 1719 阅读 · 0 评论 -
全排列的一些总结
今天做了一道网易的笔试题——数列还原。里面用到了全排列的想法,因此学习并总结了一下全排列算法。1、全排列问题描述 输入一个字符串或者序列,打印出该字符串或序列中字符或元素的所有排列。例如输入字符串abc,则输出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。2、解决思路 查了一些资料,很多都是利用递归的思想解决的原创 2016-08-09 17:32:02 · 6084 阅读 · 0 评论 -
剑指offer——栈与队列之间的相互实现
题目描述1:用两个栈来实现一个队列,完成队列的Push和Pop操作。在线编程见用两个栈实现队列。分析:队列的特点是“先进先出”,而栈的特点是“先进后出”。始终维护s1作为存储空间,以s2作为临时缓冲区。入队时,将元素压入s1。出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。具体分析见下图:代码如下:原创 2016-08-05 22:55:39 · 856 阅读 · 0 评论 -
剑指offer面试题——从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。 在线编程链接见:从尾到头打印链表输入描述:输入为链表的表头输出描述:输出为需要打印的“新链表”的表头分析:这题看似比较简单,但是其实有很多思路可以解决。下面作一个简单的总结。思路1:遍历链表,采用头插法将每个元素插入到vector容器中,代码如下:vector printListFromTailToH原创 2016-08-05 13:28:07 · 1978 阅读 · 1 评论 -
剑指offer面试题——替换空格
题目 :请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。在线编程链接见:替换空格。分析:首先容易想到的就是从前往后扫描,如果空格,就替换为%20,但是这样需要移动空格后的元素。还有一种方法,首先遍历一遍字符串,统计出空格的个数,并可以由此计算出替换之后的字符串的长度。每原创 2016-08-05 11:21:39 · 533 阅读 · 0 评论 -
网易2016软件工程师笔试题-----[编程题] 奖学金(C++实现)
网易2016软件工程师笔试题动态规划原创 2016-08-01 10:46:17 · 2571 阅读 · 0 评论 -
一道华为2016机试题总结:“最高分是多少”
关于题目的描述见最高分是多少。话不多说,直接上代码:#include#includeusing namespace std;int findmax(vector v,int st,int en){ int max = 0,tmp; if(st>en) { tmp = st; st = en; en = tmp; } for(int i = st-1;i<e原创 2016-07-03 16:46:22 · 2069 阅读 · 0 评论 -
一些程序段分析(2)
程序段3:以下代码编译时会产生错误的是哪条语句?#include using namespace std;struct Foo { Foo() {} Foo(int) {} void fun() {}};int main(void) { Foo a(10); //语句1 a.fun(); //语句2 Foo b(); //语句3原创 2016-07-02 15:23:55 · 655 阅读 · 0 评论 -
C++内存分配方式总结
最近刷题的时候经常遇到关于“C++内存分配方式”的问题,这方面知识比较欠缺,现查阅资料总结一下,顺便理一下头绪。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制原创 2016-06-30 23:29:07 · 1759 阅读 · 0 评论 -
malloc、calloc、realloc以及new的区别与联系
总结了malloc、calloc、realloc、new以及它们的的区别与联系。原创 2016-06-30 22:56:11 · 4387 阅读 · 0 评论 -
C/C++中的标准库函数总结
C 语言中有大量的标准库函数,根据功能不同,声明于不同的头文件中。这些库函数在C++中也能使用。总结了常用的库函数原创 2016-06-30 19:26:05 · 7862 阅读 · 0 评论 -
字符串逆序总结
字符串逆序原创 2016-06-30 14:43:30 · 1862 阅读 · 0 评论 -
一些程序段分析(1)
最近刷了不少牛客上的题目,感觉无论对于基础知识还是编程能力都有一点点地提升。对其中出现频率比较高的程序段分析题作一个简要的总结,以方便以后查看。程序段1:char a[] = "xyz", b[] = {'x', 'y', 'z'}; if (strlen(a) > strlen(b)) printf("a > b\n"); else printf("a 分析:strlen原创 2016-06-29 17:10:30 · 698 阅读 · 0 评论 -
C++中c_str()函数的用法
总结了c_str()的相关知识。原创 2016-05-31 17:14:11 · 54564 阅读 · 0 评论 -
PAT上面一道关于“月饼”的题目的解法
题目详细描述见PAT:月饼 (25)。根据题意,首先要得到每种月饼的价格,根据价格的大小选择要销售的月饼,最后计算最大收益。具体到编程,有多种方法。 思路1:计算得到每种月饼的价格,然后将每种月饼的价格和每种月饼的总售价存放在一个pair类型的vector容器中,再利用STL中sort()函数对vector的元素进行排序,可得到最终结果。代码如下:#include#inclu原创 2016-05-31 16:00:48 · 2211 阅读 · 0 评论 -
从n个无序的数中选出m个最大数
从n个无序的数中选出m个最大数原创 2016-05-27 16:11:23 · 7411 阅读 · 1 评论 -
使用sizeof()计算类的大小
《剑指offer》这本书里第22页有讲到sizeof()计算类大小的问题,在网上查阅了一些资料,进行了一些总结。欢迎补充指正!1、类的大小 类的sizeof()大小一般是类中的所有成员的sizeof()大小之和,这个就不用多说。确切的说,用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。注意:类只是一个类型定义,它本身是没有大小可言的。 对象大原创 2016-05-18 21:12:49 · 7645 阅读 · 4 评论 -
C++实现“简单计算器”
C++实现“简单计算器”。原创 2016-05-14 13:34:18 · 30734 阅读 · 3 评论 -
C++ 标准输出控制小数点后位数的方法
总结了C++ 标准输出控制小数点后位数的方法原创 2016-05-13 12:37:09 · 67648 阅读 · 2 评论 -
用string实现大整数加法
利用string来实现大数相加运算。原创 2016-04-26 22:33:29 · 6127 阅读 · 0 评论 -
C++中map<int,vector<int>>的初始化和访问方法
今天研究了一下形如map>或map,T>(T为某个内置类型)的关联容器如何初始化并显示其内容的问题,总结了一些版本如下,欢迎补充指正!################ 版本1 #################include#include#include#includeusing namespace std;typedef map,int> mymap;int原创 2016-04-20 23:55:27 · 32963 阅读 · 0 评论 -
一道笔试题:字符串变形
本文实现了一道笔试题:字符串变形。原创 2016-04-20 23:27:53 · 1089 阅读 · 0 评论 -
顺序容器和关联容器的比较
1、关于什么是容器,以及容器的分类,下面这两篇博客讲得比较清楚,可以参考一下: (1) C++顺序性容器、关联性容器与容器适配器 (2) C++容器:顺序容器,关联容器 2、关于顺序容器和关联容器的一些区别简要总结如下: (1)关联容器(Associative Container)与顺序容器(Sequential Container)的本质区别在于:关联容器是通过键(key)存储和读取元素的,原创 2016-04-17 21:55:58 · 4529 阅读 · 0 评论 -
C++中capacity()用法总结
C++中capacity()用法总结。原创 2016-04-16 09:07:20 · 15889 阅读 · 4 评论 -
C++删除元素的函数总结
在C++中,删除对象元素的方法可以用remove函数、erase函数、resize函数等。1、remove函数remove函数在STL中的源码如下:template OutputIterator remove_copy ( InputIterator first, InputIterator last, OutputIterator result,const T& value )原创 2016-04-16 08:52:51 · 9650 阅读 · 0 评论 -
accumulate连接string元素
关于C++中泛型算法accumulate的一个细节用法。原创 2016-04-13 10:45:53 · 1577 阅读 · 0 评论 -
C++:可变数据成员
有时候(但不频繁)会发生这样一种情况:我们希望能修改类的某个数据成员,即使是在一个const成员函数内,此时可以通过在变量声明中加入mutable关键字做到这一点。换句话说,如果某个数据成员被声明为 mutable,则从 const 成员函数为此数据成员赋值是合法的。 参考资料详解C++编程中的静态成员与可变数据成员原创 2016-04-05 16:38:37 · 2111 阅读 · 0 评论 -
C++类型别名
1、类型别名定义 类型别名(type alias)是一个名字,它是某种类型的同义词。使用类型别名有很多好处,它让复杂的类型名字变得简单明了、易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的。有两种方法可用于定义类型别名。 (1)传统的方法是使用关键字typedef:typedef double wages; //wages是double的同义词 typedef wages b原创 2016-04-05 16:08:48 · 8548 阅读 · 0 评论 -
assert预处理宏总结
1、除了assert预处理宏之外,现代C++程序很少再使用预处理宏了;2、功能: 测试一个条件并可能使程序终止,用法是:assert(expr),assert的作用是先计算表达式expr,如果其值为假(即为0),那么它会输出信息并终止程序的执行,其实就相当于一个if语句:if(假设成立){ 程序正常运行;//Do nothing!}else{ 报错&&终止程序!(避免由原创 2016-03-28 20:48:26 · 2059 阅读 · 0 评论 -
字面值类型
只有内置类型(内置类型是编程语言自己定义的一些类型)存在字面值,没有类(class)类型字面值。 例如:0是int类型的字面值,3.14159是double类型的字面值。1、整型浮点字面值 20 decimal 十进制 024 octal 八进制 0X14 hexadecimal 十六进制 128u ,128U unsigned 1024UL原创 2016-03-28 14:37:02 · 3875 阅读 · 0 评论 -
initializer_list形参总结
1、基本概念 如果函数的实参数量未知但是全部实参的类型都相同,那么我们可以使用initializer_list类型的形参。initializer_list是一种标准库类型,用于表示某种特定类型的值得数组。 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。initializer_list是C++标准程序库中的一个头文件,定义了C++标准中一原创 2016-03-27 10:53:31 · 2617 阅读 · 0 评论 -
main函数中两个参数的用法总结
1、定义 C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为: int main (int argc,char *argv[]){…}或者 int mai原创 2016-03-27 10:18:42 · 8400 阅读 · 3 评论 -
分离式编译模式
1、定义 分离编译模式源于C语言,在C++语言中继续沿用。简单地说,分离编译模式是指:一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件连接起来形成单一的可执行文件的过程。2、分离编译模式的由来 分离编译模式是C/C++组织源代码和生成可执行文件的方式。在实际开发大型项目的时候,不可能把所有的源程序都放在一个头文件中,而是分别由不同的程序原创 2016-03-25 22:14:49 · 2169 阅读 · 0 评论