
C/C++
大写的ZDQ
这个作者很懒,什么都没留下…
展开
-
C++中类构造函数使用引用形参传递的注意点
C++ primer中刚学面向对象语言的封装的时候有对sale_items卖书的例子进行试验,定义一个类,里面有类的函数,类的函数我们直接使用构造函数去定义。#include<iostream>#include <string>using namespace std;class Sales_item{public: Sales_item(string ...原创 2020-04-07 18:47:26 · 7880 阅读 · 3 评论 -
C++之局部对象,全局对象,静态对象
我们常常对于C++当中的局部对象和全局对象的初始化结果不太熟悉,而且还有一个静态对象是什么鬼?下面举例说明#include<iostream>#include<vector>#include <string>using namespace std;class Dog{public: int num; string name;};...原创 2020-03-21 17:07:16 · 2877 阅读 · 0 评论 -
C++序列式容器(STL序列式容器)介绍
所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。1.array<T,N> (数组容器) :是一个长度固定的序列,有 N 个 T 类型的对象,不能增加或删除元素。2.vector (向量容器) :是一个长度可变的序列,用来存放T类型的对象。是一个长度可...原创 2020-03-02 17:41:07 · 661 阅读 · 0 评论 -
归并排序算法及其优化(C++)
归并排序是时间复杂度为O(nlogn)排序算法,以下代码是归并排序的自顶向下递归完成整个归并过程的。相比插入排序,在一般情况下,插入排序时间比较久,但是在近乎有序的情况下,插入排序的时间复杂度能够有O(n),而此时归并排序反而比较慢,所以需要优化:对于arr[mid]<=arr[mid+1]的情况,不进行merge,或者对于小规模数组使用插入排序#include <iostream...原创 2019-11-20 11:27:21 · 913 阅读 · 0 评论 -
第七章:C++类模板
一、问答题1、 下面类模板声明中, 正确的是() 。A. template<typename T1,T2>B. template<class T1,T2>C. template<class T1,class T2>D. template<typename T1,typename T2>选择C,D2、 函数模板和类模板有什么区别?函数模...原创 2019-11-19 21:43:08 · 1360 阅读 · 0 评论 -
C++第六章-运算符重载
一、问答题1、 友元运算符 obj1>obj2 会被 C++ 编译器转换成什么格式?2、 有如下 fun 类的定义:class fun {public:…fun operator +=(fun);friend fun operator ++(fun &, int);};可以看到, 此类中分别对 += 和 ++ 后置运算符进行了重载, 那么, 如果我们在主函数中有这...原创 2019-11-09 10:39:28 · 2762 阅读 · 0 评论 -
用C++学习排序算法的一些准备工作
从一个最简单的选择排序入手,如果只是单纯的测试可以写出以下代码:void selectionSort(int arr[], int n){ for (int i=0; i < n; i++){ int minIndex = i; for(int j=i+1;j<n;j++) if(arr[j]<arr[minInd...原创 2019-11-07 11:28:46 · 250 阅读 · 0 评论 -
C++第五章——多态与虚函数
一、问答题1、 静态成员函数可以作为虚函数吗?静态成员函数不可以是虚函数。静态函数是属于类的,不属于对象本身,自然无法有自己的虚函数表指针。不能。因为静态成员函数是可以通过类名直接调用的,而虚函数必须通过对象调用,这样才可以确定到底调用哪个类中的函数,它们之间是相互矛盾的2、 派生类中的虚函数和基类中的虚函数, 它们的函数返回值、 函数名、 函数参数都必须相同吗?必须相同。如果函数参数...原创 2019-11-01 15:16:32 · 1860 阅读 · 0 评论 -
C++第四章(继承与派生)
一、问答题1、 如果基类和派生类都定义了同名的函数, 当派生类对象调用该函数时, 被调用的将是哪个函数?答:调用的派生类中定义的函数。2、 有如下类定义:class MyBASE {public:void set(int n) { k = n; }int get() const { return k; }public:int k;};class MyDERIVED :pro...原创 2019-10-27 20:03:21 · 2304 阅读 · 0 评论 -
C++第三章:引用
一、问答题1、 分析以下程序的执行结果, 并说明为什么。#include using namespace std;int main() {int a = 10;int &b = a;int &c = b;c = 2;cout << a << b << c << endl;return 0;}引用c,引用b和变量...原创 2019-10-25 15:52:26 · 374 阅读 · 0 评论 -
leetcode148-排序链表(c++)
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5思路:归并排序(递归法)题目要求时间空间复杂度分别为O(nlogn)O(nl...原创 2019-10-22 21:47:24 · 917 阅读 · 0 评论 -
leetcode75-颜色分类(C++)
题目描述:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。...原创 2019-10-22 20:24:07 · 378 阅读 · 0 评论 -
C++第二章练习题(类和对象)
一、问答题1、 类构造函数什么时候被调用? 析构函数呢?2、 非成员函数必须是友元函数, 才能访问类成员吗?1.实例化对象时先调用构造函数,一般用于初始化对象,先调用父类再成员,最后本类构造函数。释放对象时调用析构函数,一般用于释放空间,调用顺序与构造相反。2.要访问私有成员,它必须是友元,但要访问公有成员,可以不是友元二、编程题1、 定义一个类来表示银行账户, 数据成员包括储户姓名(...原创 2019-10-22 17:22:31 · 2484 阅读 · 0 评论 -
Leetcode6——Z字变换(C++)
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:st...原创 2019-10-19 10:05:13 · 460 阅读 · 0 评论 -
LeetCode3:无重复字符的最长子串(C++)
题目描述:给定一个字符串,找出不含有重复字符的 最长子串 的长度。示例:给定 “abcabcbb” ,没有重复字符的最长子串是 “abc” ,那么长度就是3。给定 “bbbbb” ,最长的子串就是 “b” ,长度是1。给定 “pwwkew” ,最长子串是 “wke” ,长度是3。请注意答案必须是一个子串,“pwke” 是 子序列 而不是子串思路:这是一道可以跟Two Sum媲美的题。...原创 2019-10-18 22:23:45 · 288 阅读 · 0 评论 -
C++第一章练习题
1、 说明下面 2 行代码各自的作用?#include using namespace std;头文件包含输入输出流,using namespace std,2、 如果调试代码时, 提示你“cout 是一个未知标识符” 的错误信息, 导致此问题的原因有哪些, 并指出修复此问题的方法。3、 假设有一个 song() 函数, 原型如下:void song(const char * nam...原创 2019-10-16 11:09:08 · 769 阅读 · 0 评论 -
C++中struct的空间计算
一般使用sizeof判断struct所占的字节数,那么计算规则是什么呢?关键词:1.变量的起始地址和变量自身的字节数2.以最大变量字节数进行字节对齐(倍数关系)。注:这里介绍的原则都是在没有#pragma pack宏的情况下先举个例子:struct A{ char a[5]; int b; short int c;}struct A;在上例中,要计算 s...原创 2019-04-03 11:19:04 · 1739 阅读 · 0 评论 -
大端和小端的问题
大端和小端的问题对于整型、长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节);而 Little endian 则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放据的低位字节到高位字节)。例如,假设从内存地址 0x0000 开始有以下数据:0x0000 0x0001 0x00...原创 2019-04-03 10:41:09 · 1255 阅读 · 0 评论 -
Leetcode——移动零(python,c++)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路:1.我们可以把数组中不是零的数字给放入新的数组当中,设定一个非零的指针索引,后面都用来存放0.class Solution: def mov...原创 2019-02-06 14:26:04 · 533 阅读 · 0 评论 -
Vibe算法原理与实践(C++)
简介ViBe - a powerful technique for background detection and subtraction in video sequencesViBe是一种像素级视频背景建模或前景检测的算法,效果优于所熟知的几种算法,对硬件内存占用也少。ViBe是一种像素级的背景建模、前景检测算法,该算法主要不同之处是背景模型的更新策略,随机选择需要替换的像素的样本,随机选...原创 2019-01-02 22:08:56 · 8155 阅读 · 1 评论 -
c语言-函数(2)-大型程序
编写一个游戏--就是我们玩的黑白棋~将一个棋子放在对手的棋子旁,使对手在对角线,水平线,垂直线上的棋子被自己的棋子所包围,这样对手的棋子就变成自己的棋子了。这游戏是和计算机对弈。#include#include#include#includeconst int SIZE = 6;const char comp_c = '@';const char player_c = 'O'原创 2017-05-08 11:39:59 · 565 阅读 · 0 评论 -
c语言-函数(1)
本次文章稍微总结一下创建和使用函数时的重点:C程序由一个或多个函数组成,其中一个是main()函数。该函数永远是执行的起点,操作系统通过一个用户命令调用它。函数是程序中独立的一块代码。函数的名称采用标识符名称的形式,由一系列字母和数字组成,第一个字符必须是字母。函数定义由函数头和函数体组成。函数头定义了函数的名称,函数返回值的类型以及函数中所有参数的类型和名称。原创 2017-05-05 19:38:28 · 551 阅读 · 0 评论 -
c语言-指针
指针在c语言当中扮演着举足轻重的作用,无论是在大型的程序,还是项目当中,指针都是方便快捷的工具。这次主要来搞一个计算器程序。定义头文件,和宏定义#include#include#include#include#include#define BUFFER_LEN 256while(strcmp(fgets(input, BUFFER_LEN, stdin), "quit\n"原创 2017-04-25 11:31:54 · 1257 阅读 · 0 评论 -
linux下c语言-day7
可以存储地址的变量称为指针,但是知道变量P是一个指针是不够的,更重要的是,编译器必须知道它所指的变量类型,char,int,long所指的类型都不一样。通过间接运算符*可以访问指针所指的变量值。这个运算符也可以称为取消引用运算符,因为它用于取消对指针的引用。而且声明指针时,一定要初始化他们。使用未初始化的指针存储数据项是很危险的。在使用指针存储一个值时,谁也不知道会覆盖什么内容。原创 2017-04-23 10:30:30 · 294 阅读 · 0 评论 -
linux下的c语言入门 - day6
这一章是字符串和文本,虽然之前有提到过,但这次是系统化的课本学习,还是要好好学一下。c中的字符串总是以\0结尾,所以字符串的长度永远比字符串中的字符数多1.而且在语句中只要遇到第一个\0时候,就表示字符串结束了。接下来介绍一下多个字符串有关的库函数:1.strcpy(string2,string2);这是用来复制字符串的,将第二个参数指定的字符串复制到第一个参数指定的字符串当中。还原创 2017-04-19 11:39:13 · 544 阅读 · 0 评论 -
linux下的c语言-day5
这次来谈谈数组,数组是一组固定的,类型相同的元素,使用数组名和一个后多个索引值,就可以访问数组中的任意元素。数组的索引值是从0开始的整数值,每一维数组都有一个索引。将数组和循环合并使用,提供了一种非常强大的编程技术。熟用数组可以在循环中处理类型相同的大量数据值,无论有多少数据值,操作所需的代码量都不多。还可以用多维数组组织数据。建立这样的数组,每一维数组都用某个特性来选择一组元素,例如原创 2017-04-17 11:02:15 · 404 阅读 · 0 评论 -
linux下的c语言入门-day4
之前复习了以便循环的只是概念,还是打算把他给写出来。for循环一般用于计算循环的次数,在该循环中控制变量的值在每次迭代时递增或递减指定的值i,知道到达某个最终值为止。while循环只要给定的条件是true就继续执行。如果循环条件在循环语句一开始就是false的,循环语句就根本不执行。do while循环类似于while循环,但其循环条件在循环语句块执行后检查。因原创 2017-04-16 09:46:05 · 314 阅读 · 0 评论 -
linux下c语言入门-day3
昨天留下了一个问题,就是字母金字塔的题目,搜了搜网上的答案,并结合热心网友的解答,代码如下: A ABA ABCBA ABCDCBA AB原创 2017-04-10 15:12:24 · 536 阅读 · 0 评论 -
基于linux下的c入门-day2
这次学到了循环语句,构造while循环时,循环中必须包含能改变判断表达式的值,使表达式值为假,否则就是死循环;循环的入口是有条件循环,要进入条件必须满足这个条件。当while(1)就会进入死循环;要注意的是while后面绝对不能有分号。do while语句是在进行条件判断之前,执行一次循环体语句(不管条件是什么)最重要,也用的最多的应该还是for循环语句了,标准是:for(原创 2017-04-09 20:51:19 · 325 阅读 · 0 评论 -
基于Linux下的C语言入门-day1
经历了一礼拜的ruby on rails的全栈开发了解,觉得自己基本上已经放弃了目前基于Mac OS下开发的坚持,一来自己的笔电已经用了4年,开个MAC虚拟机占用的内存基本上已经到顶,切回Window界面会卡一会,而且在苹果系统内操作也是那种延迟的感觉,所以我立马买了一块kinston的4G内存条,打算改善一下爱机的身体~所以呢,网站全栈开发先放一放罢。一是自己将来专业是通信,接触到网站设原创 2017-04-08 11:19:27 · 674 阅读 · 0 评论