自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 时间复杂度为O(n),空间复杂度为O(1)的数组排序

前言做了一道笔试题,要求对时间复杂度为O(n),空间复杂度为O(1)的数组排序,被空间复杂度O(1)搞得有点懵。原题中O(1)只是表示的额外空间与n无关!!!原题中数组大小n是不确定的,但是元素种类只有0,1,2三种,是一个常量,所以我们可以另外开辟一个大小为3的常量数组(hashtable)来记录每种元素出现的次数,并且hashtable[nums[i]]++亦能够对原数组进行排序,最后按照hashtable元素的顺序和次数输出即可。但是它由于新开辟的数组是大小常量,并不影响空间复杂度,故空间复杂度O

2021-09-25 22:07:48 1162

原创 继承、虚函数

资料汇集:https://www.runoob.com/cplusplus/cpp-inheritance.htmlhttps://blog.csdn.net/qq_35644234/article/details/52825311继承C++的面向对象编程是一个非常大的泛式编程,其中类之间的继承是它的一个基本方面。虚函数#include <iostream>class Entity {public: std::string Getname() { return "En

2021-03-21 19:50:15 197

原创 vector二维数组为空时的小tips

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、解题思路二、使用步骤1.引入库2.读入数据总结前言近期在刷LeetCode上一道题时,遇到了一点点问题,做个小笔记。剑指 Offer 04. 二维数组中的查找:在一个 n * m的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。一、解题思路从左下角开始走,利用这个顺序关系可以在O(m+

2021-03-16 20:05:41 1831 1

转载 C++HashTable、unordered_map 判断某个键是否存在

原文链接 unordered_map c++ reference 是c++ 哈希表的实现模板,在头文件<unordered_map>中,存储key-value的组合,unordered_map可以在常数时间内,根据key来取到value值。如何判断unordered_map 判断某个键是否存在呢?find函数。iterator find ( const key_typ

2021-03-14 15:48:26 3380

原创 构造函数、析构函数

构造函数是一种特殊类型的方法,在每一次实例化对象时运行,主要用途是初始化类。为什么需要构造函数呢?看如下例子:首先需要明确,不像Java中例如int、float类型,C++不会自动初始化。构造函数的构建方法:如果不指定构造函数,实际上也会存在一个默认的构造函数:默认的构造函数实际上什么也没有做,相当于函数体内是空白的,没有为变量进行初始化。函数重载:相同的函数名,但是函数参数不同。...

2021-03-12 22:20:39 187

原创 递增/递减运算符和指针

将*和++同时应用于指针时,将什么解除引用,将什么递增呢?这取决于运算符的位置和优先级。前缀递增、前缀递减和解除引用运算符的优先级相同,以从右到左的方式结合;后缀递增、后缀递减的优先级相同,且比前缀运算符的优先级高,以从左到右的方式结合。举例:*++p因为前缀运算符和解除引用从右到左结合,所以先将++应用于p,因为++位于解除引用的右边...

2020-11-25 21:05:56 262

原创 数据结构——数据和数据结构

1. 数据事先已经定义好的数据就是原子型数据;将原子型数据按照一定的规则重组就是结构性数据。C语言用结构体的形式将基本数据类型进行组合生成结构性数据;C++使用类和对象来产生新的数据类型。2.数据结构将原子性数据组织成结构型数据的过程使用的模型就是数据结构,数据结构实际上就是一个信息的结构化表示。数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。数据对象之间的关系和组织方式称为结构。结构有两大类:线性结构和非线性结构。线性结构:队列、链表和栈线性结构最常用的是顺

2020-10-29 22:04:55 526

原创 小白学习C++——类

面向对象(object oriented)程序设计,这是一种非常流行的编程思想,这里会涉及到类的思想。什么是类?简单地说,类是一种将数据和函数组织在一起的方式。举例假设在一个游戏中,我们想要表示玩家的位置、速度等。我们当然可以为这些数据创建变量:#include<iostream>#define LOG(x) std::cout << x << std::endlint main(){ int PlayerX0, int PlayerY0; int

2020-10-14 20:36:18 185

原创 C++引用reference

引用实际上是指针的一个扩展,引用最主要的特点是:它是一个虚拟的变量,不产生新的变量,只是引用其它已存在的变量,它只存在于我们的源码之中,不占有内存。首先来举一个引用的例子:#include<iostream>#define LOG(x) std::cout << x << std::endlint main(){ int var = 6; int& ref = var; ref = 2; LOG(var); std::cin.get();

2020-10-14 15:58:37 320

原创 C++指针

raw pointer(原指针)smart pointer(智能指针)计算机中最重要的就是内存了,因为我们在计算机中做的每一件事就是写入内存或者读取内存。那指针是什么呢?指针是一个整数,是一个数字,这个数储存一个内存地址,这就是它的全部。把一条街上的带有地址的房子想象成一个字节(byte),我们需要给街上的每一个房子取址,因为我们需要正确的访问这个房子,编地址之后我们能够确认我们访问的这个房子是不是我们想要访问的,在计算机中也就保证了我们的读取和写入是正确的。指针就是那个地址——告诉我们房子在哪

2020-10-10 21:09:36 206

原创 C++控制流语句

continue如果还能进行循环的话,直接进行下一次循环,否则就会结束循环。#include <iostream>void Log(const char* message){ std::cout << message<< std::endl;}int main(){ for (int i = 0; i < 5; i++) { if (i < 3) continue; std::cout << i <&lt

2020-10-07 20:29:30 206

原创 文件目录配置

如果只有一个项目的话,解决方案可以和项目同名,若有很多个项目,一般不同名。创建解决方案后,解决方案文件夹中包含项目文件夹和sln文件(solution file),其中:sln是一种在特定目录下的奇怪的文本文件夹格式;项目文件夹中:vcxproj是项目文件,是一个XML文件;filters是文件筛选器,不是真正的文件夹,是一个虚拟的文件夹,在我们新建的项目中默认的筛选器有源文件、头文件等等,也可以右键添加新的筛选器。这是一种视觉上的整理,和真实的文件目录没有任何关系。VS界面,点击项目名称,解决

2020-10-06 11:12:13 870

原创 小白学习C++——头文件

当我们想在一个cpp文件中创建函数,然后想在另一个cpp文件中使用,当我们尝试编译那个文件时,编译器不知道那个文件的存在,所以编译会报错。所以我们需要一个共同的地方来存放声明(注:是函数的声明而非定义,我们只能定义函数一次)举例#include<iostream>void Log(const char* message){ std::cout<<message<<std::endl;}int main(){ Log("Hello World!");

2020-09-29 21:35:17 333

原创 小白学习C++——C++是如何工作的

C++是如何工作的拿上一节我们的程序举例来说include <iostream>int main(){ std::cout<<"Hello World!"<<std::endl; std::cin.get();}include是预处理指令,任何以#开头的都是预处理指令,include的功能是找到<>内的头文件,并把头文件的内容复制粘贴到此文件中编译器收到第一个源文件时它做的第一件事就是预处理你所有的预处理指令 ,因为它发生在真正的编译之

2020-09-26 21:45:27 348

原创 小白学习C++——Windows系统建立C++程序

上一节中我们在Windows系统中安装了VS,并按照作者cherno的配置对其进行了自定义设置。下面我们基于VS来新建一个C++程序。创建新项目——空项目——配置新项目——创建(项目名称HelloWorld,解决方案名称HelloWorld1,二者命名也可以相同,命名不一致有助于查看其二者之间的关系,位置自己选择,我选择放在了我上一节建立的Project文件中了。)解决方案实际上是,关于项目和解决方案的关系可以参考此博文https://www.cnblogs.com/roucheng/p/cppxi

2020-09-25 10:52:20 406

原创 小白学习C++——Windows系统Visual Studio的下载与安装

小白学习C++——Windows系统建立C++程序注:本教程来源于澳大利亚游戏引擎工程师Cherno的视频教程,本人观看了B站UP主佐夫对原视频进行中文字幕翻译的视频教程,怕遗忘故整理了以下笔记,标明原著,保护知识产权!要写C++,我们其实只需要一个文本文档就可以对其进行编写,但重要的是编写完C++语言之后,我们需要把文本文档转换成一种能够被机器识别的二进制语言,所以我们至少需要一个编译器来进行转化。更为简便的是,我们可以通过获取某种开发环境–集成开发环境(IDE)来完成这件事。事实上,IDE是一系列

2020-09-24 22:17:08 1418

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除