
C++
文章平均质量分 75
longlovefilm
这个作者很懒,什么都没留下…
展开
-
extern const static
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而...转载 2016-11-21 21:38:05 · 254 阅读 · 0 评论 -
面试注意事项
1 链表(*pHead)->m_pNext; 注意因为优先级问题,要加括号!原创 2017-10-04 21:22:53 · 186 阅读 · 0 评论 -
C++ STL之 map\set\multimap\multiset
C++ map,set内部数据结构 1)Set是一种关联容器,它用于存储数据,并且能从一个数据集合中取出数据。它的每个元素的值必须唯一,而且系统会根据该值来自动将数据排序。每个元素的值不能直接被改变。【重点】内部结构采用红黑树的平衡二叉树。multiset 跟set 类似,唯一的区别是允许键值重复!!!如: 为何map和set的插入删除效率比用其他序列容器高? 为何每原创 2017-09-30 15:18:40 · 396 阅读 · 0 评论 -
C++ 数组或vector最大值最小值
一)Returns an iterator pointing to the element with the largest value in the range[first,last)[cpp] view plain copy position=max_element(a,a+n)-a; 这样写的话就代表的是找到的最大元素的位置在哪里,p原创 2017-09-30 13:59:58 · 31436 阅读 · 0 评论 -
C++构造函数/析构函数 设置成private的原因 及引用作为函数返回值的四种形式分析
C++构造函数/析构函数 设置成private的原因:将构造函数,析构函数声明为私有和保护的,那么对象如何创建?已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法???提出这个问题,说明你已经对c++有所思考了。从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“转载 2017-10-09 03:11:15 · 1298 阅读 · 0 评论 -
剑指offerT41另外一种解法
void print(int s, int b) { for (int i = s; i { cout } cout } void judgeshuzu(int sum) { int l = 1, r = 2; int mid = (sum + 1) / 2; int原创 2017-10-08 17:38:49 · 175 阅读 · 0 评论 -
strlen sizeof详尽分析
char arr[10]="hello";coutcoutchar *parr=new char[10];coutcoutcout程序定义了一个字符指针parr ,它指向一个分配了10个字节的空间的字符数组,由于没有进行初始化,根据strlen原理,它无法确定字符串的终止位置,所以该值为一个随机值,本例中输出14,;parr为一个指针,sizeof自然输出4个字节。原创 2017-08-10 20:59:57 · 299 阅读 · 0 评论 -
类的数组成员变量的初始化
类的数组成员变量的初始化 使用STL标准模板库之后,编程时已经很少使用数组和指针,相反,多使用序列容器vector代替之。但事实并不这么理想,在迫不得已的情况下,我们还是会选择使用数组。这里介绍一下当数组作为类的成员变量时,应该怎么对它(数组)进行初始化。在类的构造函数中可以使用成员初始化表初始化各个成员变量,这种方法是很受推荐和赞扬的原创 2017-10-08 14:51:20 · 11092 阅读 · 0 评论 -
C和C++字符串删除等特定操作处理
1 C字符串删除特定字符,实际上利用了函数重新修改了特定地址上的字符串,而且是按照添加的方式修改的!void del_chr( char *s, char ch ){ char *t=s; //目标指针先指向原串头 while( *s != '\0' ) //遍历字符串s { if ( *s != ch ) //如果当前字符不是要删除的,原创 2017-10-07 12:39:10 · 865 阅读 · 0 评论 -
深拷贝浅拷贝及注意事项
c++拷贝构造函数(深拷贝,浅拷贝)详解2013-11-05 20:30:29分类: C/C++一、什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。 下面看一个类对象拷贝的简单转载 2017-09-12 21:05:47 · 996 阅读 · 0 评论 -
单例模式
最近写代码因为疏忽单例的判断,导致程序快速切换多次启动时出现了bug ,借这个机会梳理一下几种单例模式的构造方式。单例模式存在的意义是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。解决方法1(懒汉式)一种实现方法是定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例。单例模式通过类本身来管理其唯一实例,这种特性提供转载 2017-10-12 18:11:33 · 232 阅读 · 0 评论 -
面试
1判断一个数能否被3,5,7整除#include using namespace std;int main(){ int n; cin >> n; int k = (n % 3 == 0) + (n % 5 == 0) * 2 + (n % 7 == 0) * 4;//这一句的n%3如果等于0,则(n%3==0)表达式的值为1 sw原创 2017-11-30 02:02:36 · 190 阅读 · 1 评论 -
C++ 多态覆盖隐藏重载
直到今日,才发现自己对重载的认识长时间以来都是错误的。幸亏现在得以纠正,真的是恐怖万分,雷人至极。一直以来,我认为重载可以发生在基类和派生类之间,例如: 1 class A { 2 public: 3 void test(int); 4 }; 5 class B : public A { 6 public: 7 void test(...转载 2018-07-30 15:32:26 · 404 阅读 · 0 评论 -
c++与java中继承的区别(二)虚函数(普通函数)、抽象函数(纯虚函数)、抽象类、接口
JAVA – 虚函数、抽象函数、抽象类、接口1. Java虚函数虚函数的存在是为了多态。C++中普通成员函数加上virtual关键字就成为虚函数Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为。如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数PS: 其实C++和Java在虚函数的观点大同...转载 2018-06-06 17:02:59 · 580 阅读 · 0 评论 -
Java与C++ 排序中comparator\compare异同
JAVA 版本Java Sort中Comparator的语义分析Comparator中compare的语义:接口约定返回值与o1,o2的相对大小的对应关系,即ret<0时,语义上等价于o1<o2;ret==0时,语义上等价于o1==o2;ret>0时,语义上等价于o1>o2.具体Comparator子类override compare函数时,则需要依据约定,即采用o1-o2...转载 2018-05-28 11:07:28 · 731 阅读 · 0 评论 -
C++ 虚继承实现原理(虚基类表指针与虚基类表)
虚继承和虚函数是完全无相关的两个概念。虚继承是解决C++多重继承问题的一种手段,从不同途径继承来的同一基类,会在子类中存在多份拷贝。这将存在两个问题:其一,浪费存储空间;第二,存在二义性问题,通常可以将派生类对象的地址赋值给基类对象,实现的具体方式是,将基类指针指向继承类(继承类有基类的拷贝)中的基类对象的地址,但是多重继承可能存在一个基类的多份拷贝,这就出现了二义性。虚继承可以解决多种继承前面提...转载 2018-06-03 18:45:20 · 38370 阅读 · 12 评论 -
c++与java中继承的区别(一)
c++与java中继承的区别第一点在c++中,重载不会发生在基类与派生类之间!当基类和派生类中存在同名函数时,无论同名函数的形参个数或者类型是否相同,派生类中的同名函数都会将基类中的同名函数隐藏(将在下边说明隐藏)掉,而不会是重载关系。这时,当你通过派生类对象调用该同名函数时,只能访问派生类的该函数,如果硬要访问基类的该函数,则需要在函数名前加上类作用域!如上述代码所示。而在java中子类会将父类...转载 2018-06-03 16:48:31 · 659 阅读 · 0 评论 -
C++虚函数及虚函数表解析
C++虚函数及虚函数表解析虚函数的定义: 虚函数必须是类的非静态成员函数(且非构造函数),其访问权限是public(可以定义为private or proteceted, 但是对于多态来说,没有意义。),在基类的类定义中定义虚函数的一般形式: virtual 函数返回值类型 虚函数名(形参表) { 函数体 } 虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定...转载 2018-06-03 16:32:04 · 397 阅读 · 0 评论 -
剑指offer一些题目其他解法
T38 数字在排序数组中出现的次数解法一 书中解法int GetNumberOfK(int* data, int length, int k){ int number = 0; if(data != NULL && length > 0) { int first = GetFirstK(data, length, k, 0, length ...原创 2018-03-10 19:06:08 · 166 阅读 · 0 评论 -
大数问题解决
1 剑指offer面试题12输入数字n ,打印出从1到最大的n位十进制数,比如输入n等于3,则应该打印出1,2,3,,,,,999!考虑到大数问题一般会考虑用字符串或者数组来表示大数,本题两种解法,第二种解法涉及到递归调用。方法1// ====================方法一==================== void Print1ToMaxOfND原创 2018-01-27 21:08:41 · 363 阅读 · 0 评论 -
c++ strncmp及strcmp实现
int strcmp_m(const char *s1, const char *s2) { assert((s1 != NULL) && (s2 != NULL)); while (*s1 != '\0'&&*s2 != '\0')//字符串前面部分都相同 { if (*s1 - *s2>0) ret原创 2018-01-31 18:58:40 · 937 阅读 · 0 评论 -
数组组合成最小的数
问题描述:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。 思路:先将整数数组转为字符串数组,然后字符串数组进行排序,最后依次输出字符串数组即可。这里注意的是字符串的比较函数需要重新定义,不是比较a和b,而是比较ab与 ba。如果ab ba,原创 2017-10-07 03:57:08 · 3705 阅读 · 0 评论 -
最小的k个数和multiset\reverse_iterator\const_iterator用法
自己再编译一遍!multiset leastk(const vector &data, int n, int k){ multiset s; multiset::size_type k1 = k; /* if (data.size() { return s; } */ for (vecto原创 2017-10-07 01:12:52 · 322 阅读 · 0 评论 -
各种树的概念
一叶结点 终端节点非终端节点 分支节点根节点+内部节点(除根节点外,分支节点又称为内部节点)二1非空二叉树至少有一个结点的二叉树叫做非空二叉树。二叉树是每个节点最多有两个子树的树结构。1 斜树(在大话数据结构里是在二叉树一节讲的)2 满二叉树3 完全二叉树4 二叉查找树、二叉排序树5 AVL树、平衡二叉树:(这个数是不是一定是排序树有争议,暂原创 2017-08-30 15:20:53 · 318 阅读 · 0 评论 -
排座位(百度2017秋招真题)
排座位(百度2017秋招真题)题目描述 餐厅里有一张圆形的桌子,桌子上有n个座位,座位按照顺序从1到n编号,而且n号座位和1号座位相邻,每个座位都不一样。m个人一起去这家餐厅吃饭。为了更好地就餐,他们不想坐得太过拥挤,因此,不允许有任意两个人相邻。你知道一共有多少种不同的就坐方法吗?最后答案可能非常大,输出答案除以1000000007之后的余数。两种坐法不一样原创 2017-09-15 20:41:30 · 3043 阅读 · 0 评论 -
编程题
1 给出一个n个数字的数组,两两前后合起来,看看里面有多少组可以被7整除!(入12 和34合起来可以是1234或者3412)答案有两种办法 第一种:main函数用的是常规方法,两个for循环嵌套挨个判断你n(n-1)种情况第二种:Sum函数是先将一组数里面能被7除以下,留0到6这7种余数的情况,建立sum[7]数组,每个数是余数情况的个数。然后两个for循环,第一个循环是原创 2017-09-15 17:39:44 · 110 阅读 · 0 评论 -
友元 继承 public private protected
http://blog.youkuaiyun.com/ycf74514/article/details/490530411 友元函数和友元类均可以访问private \protected成员;2 友元函数和友元类他能够引用类中的private \protected成员,但是其内部必须通过对象引用,比如函数体中a.x,b.x,a.y,b.y都是类的私有成员,他们是通过对象引用的。3 友元函数在外部调转载 2017-07-29 10:42:18 · 570 阅读 · 0 评论 -
union struct的内存分配方式及其sizeof大小
一、union共用体(联合)共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。当一个共用体被声明时, 编译程序自动地产生一个变量, 其长度为联合中元类型(如数组,取其类型的数据长度)最大的变量长度的整数倍,且要大于等于其最大成员所占的存储空间。[cpp]原创 2017-08-17 23:54:15 · 677 阅读 · 0 评论 -
几点注意事项C++
1 int b[] = { 0 }; cout int i = 9; for (i = 0; i { b[i] = i; cout } cout cout 1) 开始数组b int b[] = { 0 };已经确定变为一个int元素的数组,所以sizeof(b)为1*4原创 2017-03-25 22:15:52 · 248 阅读 · 0 评论 -
面试中的二叉树题目
版权所有,转载请注明出处,谢谢!http://blog.youkuaiyun.com/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关转载 2017-03-25 16:17:59 · 360 阅读 · 0 评论 -
科大讯飞编程题 2018 课程冲突
科大讯飞编程题 发布于 今天 16:34 1695 次浏览 0 赞 来自 我要提问 科大讯飞 2018校招 技术综合方向试卷在线考试编程题|20.0分3/3课程冲突时间限制:C/C++语言 2000MS;其他语言 4000MS内存限制:C/C++语言 65536KB;其他语言 589824KB题目描述:小明原创 2017-09-16 21:19:55 · 3006 阅读 · 0 评论 -
动态规划-击鼓传花
击鼓传花 题目描述 学校联欢晚会的时候,为了使每一个同学都能参与进来,主持人常常会带着同学们玩击鼓传花的游戏。游戏规则是这样的:n个同学坐着围成一个圆圈,指定一个同学手里拿着一束花,主持人在旁边背对着大家开始击鼓,鼓声开始之后拿着花的同学开始传花,每个同学都可以把花传给自己左右的两个同学中的一个(左右任意),当主持人停止击鼓时,传花停止,此时,正拿着花没传出去的原创 2017-09-17 01:01:32 · 2771 阅读 · 0 评论 -
编程题合集
京东1 尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题,现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示为三位数1、7、3,按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11,。 小B原创 2017-09-08 14:24:14 · 233 阅读 · 0 评论 -
C++ 构造函数初始化调用顺序及类函数内部嵌套函数情况
一C++构造函数初始化顺序C++构造函数按下列顺序被调用:(1、2、3、4是按照优先级顺序来的!)(1)任何虚拟基类的构造函数按照它们被继承的顺序构造;(2)任何非虚拟基类的构造函数按照它们被继承的顺序构造;(3)任何成员对象的构造函数按照它们声明的顺序调用;(如果成员对象有前面出现过的父类,那么还会调用此对象父类的构造函数一遍,因为第一遍(1)(2)是为了创建子类原创 2017-09-12 21:19:34 · 3780 阅读 · 1 评论 -
C++ 一些知识点
https://www.nowcoder.com/profile/7838045/myFollowings/detail/3445247链接:https://www.nowcoder.com/questionTerminal/087006d1e4ff46ca927c812294facbc4来源:牛客网答案:D; 第一个printf:由于char***cpp,可以读成cpp为一个指向char*...原创 2017-07-29 19:30:00 · 310 阅读 · 0 评论 -
互联网公司笔试常见陷阱
陷阱分类:(1)指针与字符串7. 阅读下面代码,程序会打印出来的值是(D)------------------------------(腾讯2014实习生笔试)[cpp] view plain copy void f(char **p) { *p += 2; } void main() { char *a[] = { “123转载 2017-09-19 13:45:57 · 2336 阅读 · 0 评论 -
函数返回局部变量
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意转载 2017-09-01 15:41:56 · 270 阅读 · 0 评论 -
准备面试笔试
1正数的原码 反码 补码是一样的负数的反码是符号位不变的情况下,其它位全部取反; 补码是在其反码的基础上加1;2 int a = '0', b = '\0'; printf("%d\t%d\n", a,b);\\50 0 if (a) cout if (b) cout if() 括号里放一个ch原创 2017-08-12 14:18:00 · 319 阅读 · 0 评论 -
C++类的继承与派生
一、基本概念1、类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。 2、派生类的声明:class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n{ 派生类成员声明;}; 3、一个派生类可以同时有多个基类,这种情况称为多重继承,派生类只有一个转载 2017-09-17 18:24:36 · 231 阅读 · 0 评论 -
C++ 编程出错的地方(考试选择题易错点)
1 int IsSvn(int n){ if (n % 7 == 0) return 1;}要判断这个数能不能被7整除,你就只返回1吗??!!!那岂不是只返回1,没有0的情况了!应该改为:int IsSvn(int n){ if (n % 7 == 0) return 1; else原创 2017-09-15 17:32:45 · 461 阅读 · 0 评论