
C++
文章平均质量分 83
一步两步先生
这个作者很懒,什么都没留下…
展开
-
构造函数和析构函数
构造函数1,构造函数的作用 构造函数是类的一个特殊成员变量,构造函数的作用是在创建对象的时候对对象的数据成员进行初始化例:#include<iostream>using namespace std;class Box //声明长方体类{ public: Box() //定义Box类构造函数...原创 2018-10-17 15:40:16 · 712 阅读 · 0 评论 -
哈希表及处理冲突的方法
一,概念哈希法又称***散列法、杂凑法以及关键字地址计算法***等,相应的表称为哈希表。这种方法的基本思想是:首先在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数。创建哈希表时,把关键字为k的元素直接存入地址为f(k)的单元;以后当查找关键字为k的元素时,再利用哈希函数计算出该元素的存储位置p=f(k),从而达到按关键字直接存取元素的目的。...原创 2018-11-20 13:08:14 · 4864 阅读 · 0 评论 -
关于c/c++互调的事情
c/c++互调无外乎c++文件里调用c的函数或者c文件调用c++的函数,涉及的原理也很简单,函数symbol,众所周知,c++支持重载,所以在我们看到的cpp源文件的函数,在编译后,不是看到函数名,c++编译后的函数symbol会携带更多信息,包括返回值、参数类型。c/c++互调出现问题在于编译后的链接阶段,一个个.c,.cpp文件经过编译后,生成“可重定为目标文件”,在该目标文件中调用的所有外部...转载 2018-11-20 13:27:59 · 551 阅读 · 0 评论 -
练习1-----挑选9706
有一天,小明在游戏中获得了一串数字,直觉告诉他这不是一串普通的数字串,或许可以破解一些关于网易的秘密。破解的第一步,他很想知道,在这串数字中,最多可以挑出多少个’9706’串。挑选的规则为:(1)挑出的数字’9’,’7’,’0’,’6’在原串中可以不连续,但是数字的先后顺序不能改变(2)使用过的数字不能被再次使用。如’123901370997606’可以最多挑出2个’9706’,而’6079’...原创 2018-11-29 10:48:00 · 268 阅读 · 0 评论 -
练习2-----分苹果问题
n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含一个整数 n(1 <= n <= 100),接下来的一行包含 n 个整数 ai(1 <...原创 2018-11-29 11:29:45 · 444 阅读 · 0 评论 -
练习3-----输出所有公共的最长子字符串(如果出现重复子串,则输出多次)
给定两个字符串A,B(只包含26个英文字母),输出所有公共的最长子字符串(如果出现重复子串,则输出多次)输入包括两行,每行为一个连续字符串(大小写敏感)输出包括多行,每行为扫描到的最长公共子串,按照该子串在字符串A(即第一行输入字符串)中出现的先后次序输出样例输入:abcxyzabcrstopqrstabc样例输出:abcrst#include<iostream>#...原创 2018-11-29 12:20:58 · 1618 阅读 · 2 评论 -
练习6-----在一个整数的数组中删除另外一个整数数组中的元素,并保留原数组的次序
编程:在一个整数的数组中删除另外一个整数数组中的元素,并保留原数组的次序输入包括两行:第一行是被删除的整数列表(记为列表A),每个整数之间使用空格分隔第二行是需要删除的整数列表(记为列表B),每个整数之间使用空格分隔输出只有一行,即列表A中删除列表B元素后的整数列表,输出元素按照在列表A中的次序排列,每个整数之间使用空格分隔样例输入:1 2 3 4 52 4样例输出:1 3 5...原创 2018-11-29 13:16:06 · 868 阅读 · 0 评论 -
c++详解【new和delete】
说起new和delete,了解过c++的人应该都知道吧,它是用来分配内存和释放内存的两个操作符。与c语言中的malloc和free类似。c语言中使用malloc/calloc/realloc/free进行动态内存分配,malloc/calloc/realloc用来在堆上分配空间,free将申请的空间释放掉。malloc:void FunTest(){ int *pTest = (int*...转载 2018-11-29 19:29:59 · 397 阅读 · 0 评论 -
练习5-----被3整除
链接:https://www.nowcoder.com/questionTerminal/4b22d33349764c31859253e1a6c292dd来源:牛客网小Q得到一个神奇的数列: 1, 12, 123,…12345678910,1234567891011…。并且小Q对于能否被3整除这个性质很感兴趣。小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3...原创 2018-11-27 13:11:23 · 184 阅读 · 0 评论 -
练习4-----安置路灯问题
链接:https://www.nowcoder.com/questionTerminal/ce5d057eb7e04665b50c4bfefd4072d3来源:牛客网小Q正在给一条长度为n的道路设计路灯安置方案。为了让问题更简单,小Q把道路视为n个方格,需要照亮的地方用’.‘表示, 不需要照亮的障碍物格子用’X’表示。小Q现在要在道路上设置一些路灯, 对于安置在pos位置的路灯, 这盏路灯...原创 2018-11-27 13:16:11 · 870 阅读 · 0 评论 -
练习7-----两个栈实现一个队列
操作两个先进后出的栈实现一个先进先出的队列,完成队列的Push和Pop操作。分析:首先插入一个元素a,将它插入到Stack1,此时stack1中的元素有{a},stack2为空。再向stack1压栈两个元素b和c,,此时stack1中的元素有{a,b,c},其中c位于栈顶。而stack2仍为空。如图(1)所示。当从队列删除一个元素时,按照先进先出规则,此时应该删除的元素为a,元素a存储在sta...原创 2018-12-06 16:48:49 · 168 阅读 · 0 评论 -
练习8-----两个队列实现一个栈
操作两个先进先出的队列实现一个先进后出的栈,完成栈的Push和Pop操作。分析:如图(1)所示,先向栈内压入一个元素a,由于两个队列现在都为空,可以选择把a插入到两个队列的任意一个,选择queue1插入a,继续往栈内压入元素b,c,都把它们插入queue1.此时queue1包含三个元素a,b,c,其中a位于队列的头部,c位于队列的尾部。从栈内弹出一个元素。由于栈的先进后出原则,最后被压栈的c最...原创 2018-12-06 17:56:14 · 330 阅读 · 0 评论 -
练习9-----牛牛的括号匹配
如果一个括号序列中的每一个左括号都有一个右括号与之完成配对,这个序列就是一个合法的括号匹配序列。例如:“((())),()()()”是合法的括号匹配序列,“(((())()((()”是不合法的括号匹配序列。牛牛得到了一系列的括号序列,牛牛要从这个系列中任意选取两个位置进行一次交换操作,仅且只能进行一次操作。牛牛想知道能否通过这次操作,把这个系列变成合法的括号匹配序列。输入描述:输入第一行...原创 2018-12-06 18:47:34 · 359 阅读 · 0 评论 -
为什么C++中空类和空结构体大小为1?
原文链接:http://www.spongeliu.com/260.html对于结构体和空类大小是1这个问题,首先这是一个C++问题,在C语言下空结构体大小为0(当然这是编译器相关的)。这里的空类和空结构体是指类或结构体中没有任何成员。在C++下,空类和空结构体的大小是1(编译器相关),这是为什么呢?为什么不是0?这是因为,C++标准中规定,“no object shall have the...转载 2018-11-20 12:43:44 · 1086 阅读 · 0 评论 -
大数加减法
完成以下类的实现,实现大数加减法//大整数类型class BigInt{public: BigInt(string str) :strDigit(str){}private: string strDigit; // 使用字符串存储大整数 friend ostream& operator<<(ostream &out, const BigInt &a...原创 2018-11-17 09:49:18 · 1240 阅读 · 0 评论 -
火柴棒问题
火柴棒问题用火柴棒摆成的0 - 9间的数字,横向由一根火柴构成,纵向都是由两根火柴构成,可按如下规则进行变化:1.数字移动一根火柴棒可变成其它0到9之间合法的数字2.数字添加一根火柴棒可变成其它0到9之间合法的数字3.数字去掉一根火柴棒可变成其它0到9之间合法的数字现在给出一个带有两个操作数的 + , -, *, / 的算术式子,需要你判断该式子是否成立,如给出式子9 - 6 = 3...原创 2018-11-17 09:44:55 · 3708 阅读 · 0 评论 -
函数模板
函数模板文章目录函数模板1,函数模板的定义2,函数模板的实例化3,模板参数4,函数模板重载5,对于函数模板的一些常见问题:1,函数模板的定义函数模板实际上是建立一个通用函数,其函数类型和形参类型中的全部或部分类型不具体指定,用一个虚拟的类型来代替。这个通用函数称为函数模板。函数体相同的函数都可以用这个模板来代替。定义函数模板的一般形式:template <typename T&gt...原创 2018-10-23 13:16:58 · 1219 阅读 · 0 评论 -
类模板
类模板文章目录类模板1,类模板的定义说明:2,类模板的实例化3,类模板参数(1)非类型参数(2)默认模板参数1,类模板的定义类模板是公共逻辑的抽象,通常用来作为容器或者行为的封装。一般定义格式:template<typename T1,typename T2,...>//template是定义模板的关键字,T1,T2类模板的类型参数,一个类模板中可以定义多个类型参数。//...原创 2018-10-24 15:55:13 · 864 阅读 · 0 评论 -
vector向量容器的重载实现及其常见成员函数
vector的重载实现以及常见成员方法文章目录vector的重载实现以及常见成员方法1,vector定义2,vector重载的实现3,vector常见的成员方法1,vector定义vector(向量)类似于数组,它储存具有相同数据类型的一组元素,可以从后面快速的插入和删除元素,可以快速地随机访问元素。但是在序列中间插入删除元素较慢,因为需要移动插入或删除处后面的所有元素。2,vector重...原创 2018-11-06 19:23:52 · 3866 阅读 · 0 评论 -
内联函数
内联函数1.什么是内联函数用关键字inline修饰的函数就是内联函数。关键字在函数声明和定义的时候都要加上,不写系统还是会当成常规函数2.内联函数与一般函数的区别1)内联含函数比一般函数在前面多一个inline修饰符2)内联函数是直接复制“镶嵌”到主函数中去的,就是将内联函数的代码直接放在内联函数的位置上,这与一般函数不同,主函数在调用一般函数的时候,是指令跳转到被调用函数的入口地址,执...原创 2018-11-09 11:37:51 · 260 阅读 · 0 评论 -
空间配置器,迭代器,容器,适配器
一、空间配置器下面先总体介绍一下空间配置器。空间配置器的作用是在底层为上层的各种容器提供存储空间,需要多少分配多少,一般分配的比你需要的更多。打个不恰当的比喻,空间配置器和容器之间的关系,相当于将军和粮草的关系。当然了,容器相当于将军,它在阵前杀敌,冲锋陷阵,处理各种事情;而空间配置器就相当于粮草,给前阵提供源源不断的供给;如果一个将军想打胜仗,那必须后方粮草充足才行。空间配置器有两种,一种是...转载 2018-11-06 20:45:04 · 321 阅读 · 0 评论 -
C++设计一个线程安全的懒汉单例模式
#incldue&amp;lt;iostream&amp;gt;using namespace std;class CSingleton{public: static CSingleton*getInstance() { if(instamce==NULL) { //mutex.lock(); if(insta...原创 2018-11-10 23:23:19 · 317 阅读 · 0 评论 -
二叉搜索树(BST树)
二叉搜索树文章目录二叉搜索树1,定义2,C++实现二叉树的基本操作1,定义二叉查找树(Binary Search Tree),又名二叉搜索树或二叉排序树。可以是一颗空树,或者是具有下列性质的二叉树:(1)若它的左子树不空,则左子树上所有结点的指均小于它的根结点的值;(2)若它的右子树不空,则右子树上所有结点的指均大于它的根结点的值;2,C++实现二叉树的基本操作#include&amp;amp;amp;amp;amp;amp;lt...原创 2018-10-31 15:14:04 · 586 阅读 · 0 评论 -
vector容器,迭代器,空间适配器三个类方法的实现
C++的STL库有一个容器叫vector,这个容器底层的数据结构是一个内存可以自动增长的数组,每次当数组存储满了以后,内存可以自动增加两倍,请完成vector容器、迭代器和空间配置器三个类方法的实现。#include&lt;iostream&gt;using namespace std;//容器默认的空间配置器的实现template&lt;typename T&gt;class myal...原创 2018-11-14 01:12:29 · 227 阅读 · 0 评论 -
C++模板类
理解编译器的编译模板过程如何组织编写模板程序前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编写模板类。可是在我需要自己编写模板类时...转载 2018-11-19 12:14:44 · 3584 阅读 · 0 评论 -
智能指针的死穴 -- 循环引用
C++最新标准C++11中已将基于引用计数的智能指针share_prt收入囊中,智能指针的使用门槛越来越低,不需要使用boost库,我们也能轻松享受智能指针给我们带来的方便。智能指针,正如它的名字一样,似乎是个近乎完美的聪明角色,程序员不用再纠结于new出来的内存在哪释放比较合适这种问题。比如当一个资源被多个模块共享时,程序员需要在所有模块的生命周期都结束时,由最后一个不使用该指针的模块触发指针...转载 2018-11-19 12:23:26 · 1339 阅读 · 2 评论 -
海量数据查找重复的数字
文章目录1,vector容器中存放了一些数据,在O(n)时间找到第一个重复的数据2,vector容器中存放了一些数据,在O(n)时间找到重复的数据,打印数字和重复次数3,vector容器中存放了一些数据,在O(n)时间找到重复次数最大的三个数据,打印数字和重复次数1,vector容器中存放了一些数据,在O(n)时间找到第一个重复的数据#include<iostream>#incl...原创 2018-11-22 00:51:05 · 1228 阅读 · 0 评论 -
String类操作的重载实现及String类常用成员函数
string 类操作的重载实现class CMyString{public: CMyString(char *ptr = NULL) { if (ptr == NULL) { mpStr = new char[1]; *mpStr = '\0'; } else { mpStr = new char[strlen(ptr) + 1]; strcp...原创 2018-11-05 18:12:53 · 1082 阅读 · 0 评论 -
static在C/C++中的区别和用法
static主要有三个作用:(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数前两种C和C++都有,第三种仅在C++中有,下面分别作以下介绍:一、局部静态变量在C/C++中, 局部变量按照存储形式可分为三种auto, static, register。其中register不常用到,下面主要说说auto和static的区别。存储空间分配和生存周期不同auto类型...原创 2019-04-09 14:12:00 · 649 阅读 · 2 评论