学习
daidai02
这个作者很懒,什么都没留下…
展开
-
一些数据结构
对于这题的话,需要两个栈才能实现,假设一个是push栈,一个是pop栈,当元素进来的时候进到push栈里边,进栈就往push栈进,若用户此时要弹出,则将push栈的所有元素倒入到pop栈里边,这样最底部的元素就去到了pop的栈顶,再进行pop栈的pop即可弹出元素;若用户再想弹出元素的话,需要注意的前提条件是只要pop栈空的时候才能将push栈的元素倒入,若pop栈还有元素,则直接将pop栈的栈顶弹出即可。同样的,实现栈也是需要两个队列,一个为主队列Queue,用来正常push元素;...原创 2022-09-01 13:22:31 · 182 阅读 · 1 评论 -
二分法的应用
最左边的特殊情况:只要下标为0的数比下标为1的数小,即下标为0的数为局部最小;若mid比左边的大,则局部最小值在mid的左边,则可以更新右边界为mid - 1;综上所述,数组在使用二分法的时候一般都要求有序,但在局部最小值的情况下要求无序。首先,二分法应用的前提是,数组要有序,比如下面讲的情况都是从小到大排序的。(局部最小值是指一个数比它相邻的数都小即为局部最小值!若mid下标对应的值刚好为局部最小时,返回该mid值;一般情况下的处理方式:即上述的特殊情况不成立的时候,不同的是这个函数返回的是整型;...原创 2022-08-26 12:55:49 · 726 阅读 · 0 评论 -
常用的几个算法
一、遍历算法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 · 253 阅读 · 0 评论 -
c++容器合集
1、vector和数组类似,不同的是vector是动态扩展的。注意:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间,!!所以每次扩展vector容器的首地址会改变。实现插入和删除功能要迭代器!!2、deque双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度回比vector快 vector访问元素时的速度会比deque快,原创 2021-12-17 19:51:26 · 1425 阅读 · 0 评论 -
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 · 855 阅读 · 0 评论 -
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 · 741 阅读 · 0 评论 -
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 · 464 阅读 · 0 评论 -
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 · 186 阅读 · 0 评论 -
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 · 61 阅读 · 0 评论 -
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 · 169 阅读 · 0 评论 -
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 · 169 阅读 · 0 评论 -
06c++类和对象之对象的初始化和清理
1、构造函数和析构函数#include<iostream>using namespace std;//1、构造函数 进行初始化操作class person{ //1、构造函数 //没有返回值,不用写void /*函数名和类名相同 构造函数可以有参数,可以发生函数重载 创建对象时,构造函数会自动调用,而且只会调用一次*/public: person() { cout << "函数的调用" << endl; } //2、析构函数原创 2021-12-02 19:26:54 · 547 阅读 · 0 评论 -
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 · 717 阅读 · 0 评论 -
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 · 238 阅读 · 0 评论 -
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 · 442 阅读 · 0 评论