随笔分类 - C/C++
摘要:1.C++中的大小写的转换:transform(str.begin(),str.end(),str.begin(),::tolower(大写转小写)/::toupper(小写转大写)); 2.STL中字符翻转函数:reverse ( a,a+n );
阅读全文
摘要:libcurl是一个免费开源的网络传输库(the multiprotocol file transfer library),支持ftp、ftps、http、https、telnet、ldap、pop3、smtp、rtmp、rtsp、smb等多种协议。libcurl中封装了支持这些协议的网络通信模块,
阅读全文
摘要:实际上是不应该在构造函数或析构函数中调⽤虚函数的,因为这样的调⽤其实并不会带来所想要的效果。 举例来说就是,有⼀个动物的基类,基类中定义了⼀个动物本身⾏为的虚函数 action_type(),在基类的构造函数中调⽤了这个虚函数。 派⽣类中重写了这个虚函数,我们期望着根据对象的真实类型不同,⽽调⽤各⾃
阅读全文
摘要:直观的讲:是为了降低内存泄漏的可能性。举例来说就是,⼀个基类的指针指向⼀个派⽣类的对象,在使⽤完毕准备销毁时,如果基类的析构函数没有定义成虚函数,那么编译器根据指针类型就会认为当前对象的类型是基类,调 ⽤基类的析构函数 (该对象的析构函数的函数地址早就被绑定为基类的析构函数),仅执⾏基类的析构,派⽣
阅读全文
摘要:⾸先我们来说⼀下,C++中多态的表象,在基类的函数前加上 virtual 关键字,在派⽣类中重写该函数,运⾏时将会根据对象的实际类型来调⽤相应的函数。如果对象类型是派⽣类,就调⽤派⽣类的函数,如果是基类,就调⽤基类 的函数。 实际上,当⼀个类中包含虚函数时,编译器会为该类⽣成⼀个虚函数表,保存该类中
阅读全文
摘要:多态其实⼀般就是指继承加虚函数实现的多态,对于重载来说,实际上基于的原理是,编译器为函数⽣成符号表时 的不同规则,重载只是⼀种语⾔特性,与多态⽆关,与⾯向对象也⽆关,但这⼜是 C++中增加的新规则,所以也算属于 C++,所以如果⾮要说重载算是多态的⼀种,那就可以说:多态可以分为静态多态和动态多态。
阅读全文
摘要:野指针(wild pointer):就是没有被初始化过的指针。⽤ 悬空指针:是指针最初指向的内存已经被释放了的⼀种指针。 编译, 会出现 used uninitialized 警告。 ⽆论是野指针还是悬空指针,都是指向⽆效内存区域(这⾥的⽆效指的是"不安全不可控")的指针。 访问"不安全可控"(in
阅读全文
摘要:char **generate_memory(int num) { // 循环控制变量 int i = 0; // 声明二维指针 char **p = NULL; // 在堆内存中 , 分配一块内存空间 // 用于存储 num 个 一维指针 // 每个 一维指针 指向一块内存空间 p = (char
阅读全文
摘要:【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: { int i,j,k; /*以下为三重循环*/ for(i=1;i<5;i++
阅读全文
摘要:下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么? int n; if (n == 10) // 第一种判断方式 if (10 == n) // 第二种判断方式 第二种方式比较好 如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=
阅读全文
摘要:char **str; char *p=(char *)malloc(1024); memset(p,0,1024); strcpy(p,"123w213"); str=&p; cout<<*str<<endl; if(str) { free(str); str=NULL; cout<<"free"
阅读全文
摘要:1 环境配置 下载最新版源码。 编译过程需要用到cmake,注意安装cmake的过程需要添加环境变量。 解压源代码,然后通过命令行进入源码目录,输入四条指令 mkdir build cd build cmake .. -G "Visual Studio 16 2019" -T host=x64 cm
阅读全文
摘要:一、实现可变参数的相关工具 va_list 为可变参数类型,一般为指针类型。用于扫描可变参数列表的变量都是这种类型。以下暂称该变量为取值指针。 va_start 是一个宏,它根据最右边的固定参数的地址和数据类型推算出可变参数列表的起始地址,并将该地址赋予取值指针。 va_arg 是一个宏,它返回当前
阅读全文
摘要:数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作改动 示例 1: 输入:[3,0,1] 输出:2 示例 2: 输入:[9,6,4,2,3,5,7,0,1] 输出:8 Code: class Solution
阅读全文
摘要:珠玑妙算游戏(the game of master mind)的玩法如下。 计算机有4个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,计算机可能有RGGB 4种(槽1为红色,槽2、3为绿色,槽4为蓝色)。作为用户,你试图猜出颜色组合。打个比方,你可能会猜YRGB
阅读全文
摘要:你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 示例 1 输入: shorter = 1 longer = 2 k = 3 输出:
阅读全文
摘要:数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。 示例 1: 输入:[1,2,5,9,5,9,5,5,5] 输出:5 示例 2: 输入:[3,2] 输出:-1 示例 3: 输入
阅读全文
摘要:给你两个整数数组 arr1 , arr2 和一个整数 d ,请你返回两个数组之间的 距离值 。 「距离值」 定义为符合此距离要求的元素数目:对于元素 arr1[i] ,不存在任何元素 arr2[j] 满足 |arr1[i]-arr2[j]| <= d 。 示例 1: 输入:arr1 = [4,5,8
阅读全文
摘要:给定两个整数 a 和 b ,返回 任意 字符串 s ,要求满足: s 的长度为 a + b,且正好包含a 个 'a' 字母与 b 个 'b' 字母; 子串 'aaa' 没有出现在 s 中; 子串 'bbb' 没有出现在 s 中。 示例 1: 输入:a = 1, b = 2 输出:"abb" 解释:"
阅读全文