自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一些数据结构

对于这题的话,需要两个栈才能实现,假设一个是push栈,一个是pop栈,当元素进来的时候进到push栈里边,进栈就往push栈进,若用户此时要弹出,则将push栈的所有元素倒入到pop栈里边,这样最底部的元素就去到了pop的栈顶,再进行pop栈的pop即可弹出元素;若用户再想弹出元素的话,需要注意的前提条件是只要pop栈空的时候才能将push栈的元素倒入,若pop栈还有元素,则直接将pop栈的栈顶弹出即可。同样的,实现栈也是需要两个队列,一个为主队列Queue,用来正常push元素;...

2022-09-01 13:22:31 205

原创 异或运算的相关试题

试题五:一个数组中有一个数出现了K次,其他数都出现了M次,M > 1,K < M,找到出现了K次的数,要求额外空间复杂度O( 1 ) ,时间复杂度O(N)。这时候提取出eor最右边的1,假设最右边为1的下标为index,可以知道a和b下标为index的二进制数形式一个为1,一个为0;这时候将数组里的数分为两类,一个是下标也为index的二进制形式也为1的数,另一种就是为0的数,这样a和b两个数就被分开了;本质就是偶数次的数异或运算的结果为0,奇数次的数异或运算的结果为本身!(因为eor = a ^ b)。.

2022-08-28 14:09:50 391

原创 二分法的应用

最左边的特殊情况:只要下标为0的数比下标为1的数小,即下标为0的数为局部最小;若mid比左边的大,则局部最小值在mid的左边,则可以更新右边界为mid - 1;综上所述,数组在使用二分法的时候一般都要求有序,但在局部最小值的情况下要求无序。首先,二分法应用的前提是,数组要有序,比如下面讲的情况都是从小到大排序的。(局部最小值是指一个数比它相邻的数都小即为局部最小值!若mid下标对应的值刚好为局部最小时,返回该mid值;一般情况下的处理方式:即上述的特殊情况不成立的时候,不同的是这个函数返回的是整型;...

2022-08-26 12:55:49 772

原创 常用的几个算法

一、遍历算法1、for_each算法普通函数和仿函数实现遍历操作#include<iostream>using namespace std;#include<vector>#include<algorithm>//1、普通函数实现遍历操作//直接传函数名即可void print01(int a){ cout << a << " ";}void test01(){ vector<int>v; f

2021-12-18 14:21:21 269

原创 c++容器合集

1、vector和数组类似,不同的是vector是动态扩展的。注意:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间,!!所以每次扩展vector容器的首地址会改变。实现插入和删除功能要迭代器!!2、deque双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度回比vector快 vector访问元素时的速度会比deque快,

2021-12-17 19:51:26 1450

原创 deque容器

1、deque的插入和删除插入和删除传参一定要是迭代器!!!!!!!#include<iostream>using namespace std;#include<deque>void printdeque(const deque<int>&d){ for (deque<int>::const_iterator it = d.begin(); it < d.end(); it++) { cout << *it

2021-12-13 21:31:03 878

原创 vector容器

1、构造函数#include<iostream>using namespace std;#include<vector>void printvector(vector<int>& v){ for (vector<int>::iterator it = v.begin(); it < v.end(); it++) { cout << *it << " "; } cout << endl

2021-12-13 18:40:02 767

原创 STL初始

STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据。 算法:各种常用的算法,如sort、find、copy、for_each等 迭代器:扮演了容器与算法之间的胶合剂。初学时可以理解为一个指针。 仿函数:行为类似函数,可作为算法的某种策略。 适配器:一种用来修饰容器或者仿函数或迭代器接口的东西。 空间配置器:负责空间的配置与管理。容器:vector算法:for_..

2021-12-12 14:20:54 348

原创 11c++多态

1、多态的基本概念成员函数加上关键字virtual后Animal里多了个指针vfptr,指向vftable,里边储存了Animal& animal的地址。如果子类重写成员函数,那么复制过来的vftable会储存重写的类,即储存的是Cat& cat的地址。#include<iostream>using namespace std;class Animal{public: //地址早绑定 在编译阶段确定函数地址 //如果想执行让猫说话,那么这个函数地址就

2021-12-07 15:47:39 487

原创 10c++继承

1、继承语法class A : public B;A 类称为子类 或 派生类B 类称为父类 或 基类2、继承方式3、继承中的对象模型#include<iostream>using namespace std;class Base{public: int m_A;protected: int m_B;private: int m_C;};class Son :public Base{public: int m_D;};//利用开发

2021-12-05 14:13:56 198

原创 09运算符重载

1、加号运算符重载#include<iostream>using namespace std;//运算符重载//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//注意,只有自定义地数据类型可以发生运算符重载,内置的数据类型不能发生运算符重载class Person{public: //1、成员函数重载+号 //Person operator+(Person &p) //{ // Person tmp; // tmp.m_A = this-&

2021-12-04 19:24:00 75

原创 08c++友元

1、全局函数做友元#include<iostream>using namespace std;class Building{ //goodguy全局函数是Building好朋友,可以访问Building里的私有成员 //friend + 函数声明; friend void goodguy(Building* building);public: Building() { m_Bedroom = "卧室"; m_Settingroom = "客厅"; }pub

2021-12-04 09:18:06 185

原创 07c++的对象模型和this指针

1、成员对象和成员函数是分开储存的#include<iostream>using namespace std;class person{ //成员对象 int m_a;//非静态变量 占4个字节即证明是属于类的对象上面的 static int m_b;//执行test02后,发现字节大小还是4个,即证明静态成员变量不属于类的对象上面 //成员函数 void fun1(){}//非静态函数,执行test02后,发现字节大小还是4个,即证明非静态函数变量不属于类的对象上面

2021-12-03 19:11:56 184

原创 06c++类和对象之对象的初始化和清理

1、构造函数和析构函数#include<iostream>using namespace std;//1、构造函数 进行初始化操作class person{ //1、构造函数 //没有返回值,不用写void /*函数名和类名相同 构造函数可以有参数,可以发生函数重载 创建对象时,构造函数会自动调用,而且只会调用一次*/public: person() { cout << "函数的调用" << endl; } //2、析构函数

2021-12-02 19:26:54 573

原创 05c++类和对象之封装

1、封装1)、封装的意义#include<iostream>using namespace std;const double pi = 3.14;class circle{ //访问权限 // 公共权限public: //属性 // 半径 int m_r; //行为 //一般用函数来表达 double calculate() { return 2 * pi * m_r; }};int main01(){ circle c1; c1

2021-12-01 16:38:12 509

原创 04c++

一、引用:本质就是一个指针常量1、引用的基本语法#include<iostream>using namespace std;int main(){ int a = 10; //引用语法:数据类型 &别名 = 原名; int& b = a; //引用必须要初始化 //引用在初始化后,不可以改变 cout << "a = " << a << endl; cout << "b = " <<

2021-11-30 19:19:24 736

原创 c++的三个区除代码区外

一、三个区:全局区、栈区、堆区。1、全局区#include<iostream>using namespace std;//全局变量int g_a = 10;int g_b = 10;//const修饰的全局变量const int c_g_a = 10;const int c_g_b = 10;int main(){ //全局区 //全局变量、静态变量、常量 //创建普通局部变量,即函数体里边的变量 int a = 10; int b = 10;

2021-11-30 13:46:08 261

原创 03c++指针

一、函数的分文件编写:创建后缀名为.h的头文件 创建后缀名为.cpp的源文件 在头文件中写函数的声明 在源文件中写函数的定义二、指针的定义:int a = 10;//且a有其对应的地址,假设其地址为0x0004;int * p; //定义指针p = &a; //定义p为a的地址;/*指针变量可以通过" * "操作符,操作指针变量指向的内存空间,这个过程称为解引用。即*用来访问地址对应的值*/*p = 100; //通过指针改变a的地址对应的值,即将地址0x0004储.

2021-11-28 20:09:56 206

原创 02c++

1、逆置排序 int arr[] = { 12,34,56,54,89 }; int star = 0; //先定义好数组起始位置 int end = sizeof(arr) / sizeof(arr[0]) - 1 ; //与数组的长度 while (star < end) { int tmp = arr[star]; arr[star] = arr[end]; arr[end] = tmp; ...

2021-11-26 22:24:04 456

原创 敲桌子c++

#include<iostream>using namespace std;int main(){ for (int i = 1; i < 101; i++) { if (i == 7 || (i > 10 && i % 10 == 7)) { cout << "敲桌子" << endl; } else if (i % 7 == 0)...

2021-11-25 21:38:07 108

原创 01c++

1、' e '表示的含义2、char类型3、转义字符其中' \t '代表了八个空格,可以整齐地输出数据4、字符串打印要包含头文件 :#include<string>5、布尔类型只有两个值:true — 真(本质是1) false — 假(本质是0)6、数据的输入字符类型:布尔类型:只要是不为0的数都为真;7、当为取余运算符时,已知a<b,则a % b = a 。且除数不能为0.*两个小数不能...

2021-11-25 19:41:50 469

空空如也

空空如也

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

TA关注的人

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