c++
文章平均质量分 91
qq_18884827
这个作者很懒,什么都没留下…
展开
-
初始化列表使用情况
深度探索c++对象模型一书中有提到:必须使用的情况:1) 初始化一个reference成员2) 初始化一个const成员3) 调用一个基类的构造函数,而该函数有一组参数4) 调用一个数据成员对象的构造函数,而该函数有一组参数原创 2016-09-06 17:04:47 · 262 阅读 · 0 评论 -
nyoj488素数环
描述有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。输入有多组测试数据,每组输入一个n(0n20),n=0n(0表示输入结束。输出每组第一行输出对应的Case序号,从1开始。如果存在满足题意叙述的素数环,从小到大原创 2016-08-31 11:49:36 · 276 阅读 · 0 评论 -
sizeof大小
#include #include using namespace std;int main(){char a[20] = { '2', '3', '4' };string b[20] = { "a", "b", "c" };double c[30] = { 100.0, 200.0, 300.0 };int d[10] = { 1, 4, 5, 6 };cou原创 2016-08-31 08:44:39 · 185 阅读 · 0 评论 -
system("pause")危害
不要用system("pause")来暂停,可以改用std::cin.get或getchar()为何不要用system("pause")?有两个理由一 : 不具可移植性二 : 这东西很贵贵在那里?让我们来看看system("pause")的流程1 : 暂停你的程式2 : 在sub-process中启动OS3 : 寻找要执行的命令并为之分配记忆体4 : 等待输原创 2016-08-09 12:12:10 · 4109 阅读 · 0 评论 -
static作用
静态成员如果有n个同类的对象,那么每一个对象都分别有自己的数据成员,不同对象的数据成员各自有值,互不相干。但是有时人们希望有某一个或几个数据成员为所有对象所共有。这样可以实现数据共享。在前面介绍过全局变量能够实现数据共享。如果在一个程序文件中有多个函数,在每一个函数中都可以改变全局变量的值,全局变量的值为各函数共享。但是用全局变量的安全性得不到保证,由于在各处都可以自由地修改全局变原创 2016-08-29 10:18:35 · 502 阅读 · 0 评论 -
c++笔试面试4
1、假设A为抽象类,下列声明( )是正确的。int fun(A);A Obj;A fun(int);A *p; D抽象类不能初始化,不能当做返回值,不能当做参数,可以作为指针变量,因为此时还没有初始化总结:1.抽象类只能用作其他类的基类,不能定义抽象类的对象。2.抽象类不能用于参数类型、函数返回值或显示转换的类原创 2016-08-20 09:38:59 · 687 阅读 · 0 评论 -
c++笔试面试3
1、C++ STL 的实现:1.vector 底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是原创 2016-08-19 17:28:03 · 376 阅读 · 0 评论 -
scanf参数问题
a 读浮点值(仅适用于 C99) A 读浮点值(仅适用于 C99) c 读单字符 d 读十进制整数 i 读十进制、八进制、十六进制整数 e 读浮点数 E 读浮点数 f 读浮点数 F 读浮点数(仅适用于 C99) g 读浮点数 G 读浮点数 o 读八进制数 s 读字符串 x 读十六进制数 X 读十六进制数 p 读指针值 n 至此已读入值原创 2016-08-30 11:02:13 · 1076 阅读 · 0 评论 -
快速排序
在快速排序这个地方上,在涂鸦移动上吃了一次亏,在阿里笔试上又吃了一次。总结一下快速排序有很多种变种,每种不同的方法得到的排序结果都是左边的比他小,右边比他大。但是不同的方法,最后得到的两边的顺序不一样。百度百科中的快速排序(最经典):选择第一个数位基准数,然后从后开始搜索比他小的数,左边记录i,右边记录j,然后放在第0个位置上此时空出一个位置j,然后从前面开始搜索比他大的数,找到之后放到j原创 2016-09-09 22:02:22 · 296 阅读 · 0 评论 -
for循环里面的递归
for循环里面的递归调用探讨递归本来要来简化循环问题的,不过程序中往往却有for加递归一起使用的情况。我们在for里面堪套for,或者for里面的for再堪套for,都能很直观地理解。当for里面加入了递归,理解的层面就由三维跳到了四维,很难直接观看,要靠无穷的想像力。先来分析一段小代码这个代码里,For里面堪套了递归调用,你觉得应该怎样预测它执行的结果原创 2016-08-08 17:47:16 · 5517 阅读 · 0 评论 -
c++笔试面试4
1、#include #define SUB(x,y) x-y#define ACCESS_BEFORE(element,offset,value) *SUB(&element, offset) = valueintmain() { intarray[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,原创 2016-08-21 10:24:28 · 422 阅读 · 0 评论 -
接口与抽象类区别
1、从形态上:抽象类可以给出一些成员的实现,接口却不包含成员的实现。抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但可实现多个接口2、类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象。也就是说接口是对类的局部(行为)进行的抽象,而抽象类是对整体(字段,属性,方法)的抽象。3、如果行为跨越不同类的对象,可使用接口,对于一些相似的类对象,用继原创 2016-08-31 18:02:41 · 207 阅读 · 0 评论 -
高并发简介
1、什么场景下需要并发服务器 2、高并发服务器模型 多进程并发服务器 多线程并发服务器 多路IO复用服务器:select服务器,poll并发服务器,epoll服务器原创 2016-08-22 16:30:14 · 220 阅读 · 0 评论 -
qsort用法
#include#includeusing namespace std;int cmp(const void *a, const void * b) //a-b代表升序排列,b-a代表降序排列{return *(int *)a - *(int *)b;}int main(){int a[12] = { 4, 3, 3, 7, 8, 9, 5,原创 2016-09-06 16:58:39 · 267 阅读 · 0 评论 -
枚举,结构体区别
枚举enun enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常数组成的独特类型。每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。枚举元素的默认基础类型为 int。默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增声明[访问修饰符] enum 枚举名 { 成员1, 成员2, }原创 2016-09-06 15:21:10 · 6475 阅读 · 0 评论 -
静态类与非静态类,静态成员的区别
深入理解C# 静态类与非静态类、静态成员的区别静态类静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。静态类是自C# 2.0才引入的,C# 1.0不支持静态类声明。程序员必须声明一原创 2016-09-06 15:18:25 · 693 阅读 · 0 评论 -
泛型
简单理解:一种类型占位符,或称之为类型参数。我们知道在一个方法中,一个变量的值可以作为参数,但其实这个变量的类型本身也可以作为参数。泛型允许我们在调用的时候再指定这个类型参数是什么。在.net中,泛型能够给我们带来的两个明显好处是——类型安全和减少装箱、拆箱。泛型的第一个好处是编译时的严格类型检查。这是集合框架最重要的特点。此外,泛型消除了绝大多数的类型转换。如果没有泛型,当你使用集合原创 2016-09-05 21:34:24 · 222 阅读 · 0 评论 -
struct与typedef struct
(1) struct{ int x; int y; }test1; 好,定义了 结构 test1,test1.x 和 test1.y 可以在语句里用了。(2) struct test {int x; int y; }test1; 好,定义了 结构 test1,test1.x 和 test1.y 可以在语句里用了。与 1 比,省写 了 test(3) typedef struct原创 2016-08-28 20:54:40 · 415 阅读 · 0 评论 -
cvte笔试总结
1、#includeusing namespace std;int main(){int i = 0x7, j = 0x3, k = 0x3;int a = i&&j&&k;int b = j&j&k;cout cout getchar();return 0;}最后输出结果13第一个是直接与,不是0的值最后都是1,第二个是按位与,最后得到原创 2016-09-04 17:36:29 · 1058 阅读 · 0 评论 -
c++多线程
// xiancheng.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;DWORD WINAPI Fun(LPVOID lpParamter){while (1){ cout Sleep(1000); }}int m原创 2016-08-22 20:24:53 · 245 阅读 · 0 评论 -
sizeof(结构体)
运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。 C语言中的构造数据类型有三种:数组、结构体和共用体。 数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上元素的个数。 结构体中的成员原创 2016-09-13 10:55:41 · 1148 阅读 · 0 评论 -
sizeof(结构体)
运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。 C语言中的构造数据类型有三种:数组、结构体和共用体。 数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上元素原创 2016-09-13 10:11:39 · 336 阅读 · 0 评论 -
360面试经验
意料之中,果然 第一次大公司面试,一面就挂了,面的是PC网游c++。这个职位对服务器,线程,和进程要求的知识比较多。开始先让我自我介绍,肯定要自夸一顿,把成绩,获奖,项目都说一遍。然后他说项目挺多,你挑一个你最拿手的项目说一下。我说华电就业信息网站,让说难点在哪,我说上传表格那个地方最难,开始用的是微软自带的一套,比较麻烦,后来就用NPOI实现,他说就是熟悉调用控件的过程是吗?我说不是,信息比原创 2016-08-24 17:41:08 · 1522 阅读 · 0 评论 -
string::size_type注意
关于string::size_typesize_type其实是string模板类定义的一种类型之一,它与size_of的用法相似,只是它根据存储的类型返回字符串的长度.对于 string具体化,将根据char返回字符串的长度,在这种情况下,size_type与size_of等效.size_of是一种无符号类型. 你说的 size_type 其实就是 unsigned原创 2016-08-08 11:28:53 · 303 阅读 · 0 评论 -
先序后序中序非递归算法
// BinaryTreeBianli.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #include #include using namespace std;typedef struct BiTNode{char原创 2016-08-29 12:29:07 · 748 阅读 · 0 评论 -
linux课堂笔记----磁盘管理
扩展分区要经过逻辑分区才能访问数据fdisk命令只能用于mbr分区,parted两个分区都可以用 创建一个组:sexy 把sexy组的名字改为market 把market组的编号设为668 新建一个组为boss且编号为888 删除market 创建一个sexy组 添加用户sdf组名是sexy 添加用户jzmb组名是sexy 添加用户并且指定文件为/home/xxx下(上两个默认文件原创 2016-07-11 15:43:37 · 268 阅读 · 0 评论 -
size()与length()的区别
C++标准库中的string中两者的源代码如下: size_type __CLR_OR_THIS_CALL length() const { // return length of sequence return (_Mysize); } size_type __CLR_OR_THIS_C转载 2016-06-11 17:27:54 · 625 阅读 · 0 评论 -
stringstream
istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。 istringstream的构造函数原形如下: istringstream::istringstream(string str);include include using namespace std; int main() { istringstr原创 2016-06-05 10:45:59 · 182 阅读 · 0 评论 -
c++中怎样把字符转换为整型
如果要读取string s=“2016-6-9“这个string类型的字符串时,肯定要把里面的年月日转换为int型。但是s[2]读取的是ascaII码int i=0;while(isdigit(s[i])){ year=year*10+s[i]-'0'; i++}如果加s[i]的话,加的是ascaii码,减去‘0’的意思是减去0的ascaii码,刚好等于s原创 2016-06-09 19:46:14 · 3222 阅读 · 0 评论 -
求string字符串长度
用string的成员方法length()或者size()都可以取得字符串长度#include #include using namespace std;int main(){ string str = "Test string"; cout << str.length() << endl; cout << str.size() << endl; return 0;}原创 2016-05-30 20:25:36 · 2811 阅读 · 0 评论 -
指针和引用的区别
指针和引用的联系与区别 ★ 相同点:1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。★ 区别:1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;4. 引用没有 const,指针有 const;5. 引用不能为空,指原创 2016-04-16 21:11:57 · 219 阅读 · 0 评论 -
指针和引用作为函数传递参数
引用传递void OutputNumber(int &nNumber) //设置引用类型参数 { cout nNumber endl; //输出结果 nNumber = 20; //修改参数值,将影响到实际参数 }原创 2016-04-20 17:10:02 · 3313 阅读 · 0 评论 -
c++中vector用法
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout(5)使用迭代器访问元素.vectorint>::iterator it;for(it=ve转载 2016-04-14 08:57:47 · 245 阅读 · 0 评论 -
linux课堂笔记----磁盘管理
扩展分区要经过逻辑分区才能访问数据fdisk命令只能用于mbr分区,parted两个分区都可以用 创建一个组:sexy 把sexy组的名字改为market 把market组的编号设为668 新建一个组为boss且编号为888 删除market 创建一个sexy组 添加用户sdf组名是sexy 添加用户jzmb组名是sexy 添加用户并且指定文件为/home/xxx下(上两个默认文件原创 2016-07-11 15:43:43 · 305 阅读 · 0 评论 -
堆和栈的区别
一、堆栈空间分配区别: 1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈; 2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。 二、堆栈缓存方式区别: 1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放; 2、堆是存放原创 2016-04-16 09:50:52 · 340 阅读 · 0 评论 -
C++中 模板Template的使用
C++中 模板Template的使用 1、在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢?答:class用于定义类,在模板引入c++后,最初定义模板的方法为:template,这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typ转载 2016-07-26 11:53:52 · 268 阅读 · 0 评论 -
c++笔试面试2
1、口诀:左定值,右定向。即 const在*的左边不能改变字符串常量的值;const在*的右边不能改变指针的指向;2、非法指针是指该指针的值不是一个已经分配的内存地址 X非法指针是指向的内存已经被回收,或者指向一个错误的地址。3、#includeusing namespace std;class B0//基类BO声明{public://原创 2016-08-19 08:48:32 · 433 阅读 · 0 评论 -
C++什么时候用new,什么时候不用new
void func(){Student st;st.name="hello";}void main(){func();cout<<st.name;//错误的调用}st只是局部变量,出了函数st就被销毁了,这样不利于传递参数等,那就得用全局变量了,而new就避免使用全局变量。void func(){Student *st=new Student;st->name="hel原创 2016-08-27 11:23:31 · 12994 阅读 · 4 评论 -
c++经典易错
1、#define add(a+b) a+b int main() { printf("%d\n", 5* add(3+ 4)); return0; }宏为简单替换,此处应该为5*3+4=19;2、std::vector::at 和 std::vector::operat原创 2016-08-17 22:11:54 · 638 阅读 · 0 评论 -
指针数组与数组指针
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针数组指针:a pointer to an array,即指向数组的指针还要注意的是他们用法的区别,下面举例说明。int* a[4] 指针数组 表示:数组a中的元素都为int型指针原创 2016-08-17 21:52:30 · 157 阅读 · 0 评论