- 博客(59)
- 收藏
- 关注
原创 c++ set
操作方法std::map支持std::set支持说明查找find(key)✔️✔️返回指向键为key的元素的迭代器,未找到返回end()。count(key)✔️✔️返回键为key的元素数量(map和set中为 0 或 1)。✔️✔️返回指向第一个不小于key的元素的迭代器。✔️✔️返回指向第一个大于key的元素的迭代器。✔️✔️返回包含所有键为key的元素范围的pair,范围为空时两个迭代器相等。添加✔️❌插入键值对,返回bool表示是否插入成功。❌✔️插入元素,返回。
2025-02-16 14:48:53
295
原创 图论常见算法
用途:关键路径方法(CPM)用于项目管理中,帮助确定哪些任务是“关键”的,即那些对项目完成时间有直接影响的任务。它被广泛应用于网络设计、构建最优电路、电力网络、交通规划等领域。用途:拓扑排序是有向无环图(DAG)的一种排序方式,确保每个节点都在它依赖的节点之前。实际应用:如计算地图上的最短路线、在网络中寻找数据传输的最优路径等。实际应用:如任务调度中的优先级排序、编译过程中的模块依赖关系等。实际应用:如设计最小成本的通讯网络、城市间的最短道路规划等。实际应用:如建筑工程的项目管理、软件开发的进度控制等。
2025-02-04 00:45:12
640
原创 vscode 远程登录
登录不上如何检查检查虚拟机是否有shh进程,及22号端口ps -e|grep sshnetstat -ntlp|grep 22window使用shh命令连接试一试ssh you@192.168.38.165重启网卡登录参考
2022-03-21 16:49:51
1107
原创 mysql 设置
mysql 设置密码刚安装mysql时,切换到root用户,不用密码就能登录。或者用安装时,产生的随机用户密码登录/etc/mysql/mysql.conf.d/mysqld.cnf/etc/mysql/debian.cnf 修改密码修改mysql密码把密码先置为空,然后再设置密码 update user set authentication_string='' where user='root';flush privileges;ALTER USER 'root'@'localho
2022-01-15 14:22:08
391
原创 tmux 的使用
修改~/.tmux.conf# 修改主键unbind C-bset-option -g prefix C-j# 激活鼠标set-option -g -q mouse on# 修改分屏bind h split-window -hbind v split-window -vunbind '"'unbind %hotkey# Window 窗口c 新建窗口 new a window& 关闭窗口 close current windowl 切换窗口 switch t
2022-01-12 14:14:53
230
原创 智能指针
自定义智能指针#include <iostream>using namespace std;class Person {public: int m_age; Person(int age) :m_age(age) { cout << "Person(int age)" << endl; } Person(const Person& per) :m_age(per.m_age) { cout << "Person(const Perso
2021-06-27 23:18:32
126
原创 类型转换 double的存储
类型转换c语言风格(type) expressiontype (expression)c++风格static_castdynamic_castreinterpret_castconst_cast 使用: xx_cast <type>(expression)const_cast#include <iostream>using namespace std;class Person {};int main() { const
2021-06-27 15:35:15
118
原创 运算符重载
#include <iostream>using namespace std;class Point { int m_x; int m_y;public: Point(int x=0,int y=0):m_x(x),m_y(y) {} void display()const ; // &防止产生临时对象 Point& operator+=(const Point& p1); // 第一个const,返回常量 不能 (p1+p2)=p3 // 第二个
2021-06-26 18:22:02
100
原创 内部类 局部类
内部类如果将类A定义在类C的内部,那么类A就是一个内部类(嵌套类)内部类的特点支持public、protected、private访问权限成员函数可以直接访问其外部类的所有成员(反过来不行)成员函数可以直接不带类名、对象名访问外部类的static成员不会影响外部类的内存布局可以在外部类内部声明,在外部类外部定义局部类在一个函数内部定义的类,称为局部类局部类的特点作用域仅限所在函数内部其所有成员必须定义在类内部,不允许定义static成员成员函数不能直接访问函数的局部变
2021-06-24 23:11:44
90
原创 友元 友元类
#include <iostream>using namespace std;class Point { //只能是成员函数 Math::point 不行 //friend Point add(Point p1, Point p2); friend class Math; int m_x; int m_y;public: Point(int x=0,int y=0):m_x(x),m_y(y) {} void display() { cout << "("
2021-06-24 23:00:20
78
原创 编译器自动生成构造函数
c++编译器在某些特定情况下,会给类自动生成无参的构造函数成员变量在声明时进行了初始化有定义虚函数虚继承其他类包含了对象类型的成员,且这个成员有构造函数(编译器生成或自定义)父类有构造函数(编译器生成或自定义)...
2021-06-24 22:09:54
196
原创 拷贝构造函数
调用父类拷贝构造#include <iostream>using namespace std;class Person {public: int m_age; Person(int age) :m_age(age) {} Person(const Person& person) :m_age(person.m_age) {}};class Student:public Person {public: int m_score; Student(int age,i
2021-06-24 12:22:11
87
原创 数组与指针
const char *name ="youyuo" sizeof(name) = 4; //x86 strlen(name) = 6;char array[] = "youyou" sizeof(array) = 7; //x86 strlen(array) = 6;
2021-06-24 11:33:09
101
原创 const成员变量、函数
const成员被const修饰的成员变量、非静态成员函数const成员变量必须初始化(类内初始化),可以在声明的时候直接初始化赋值非static的const成员变量还可以在初始化列表中初始化const成员函数(不能是静态)const关键字放在参数列表后面,函数声明和实现都必须带const 内部不能修改非static成员变量 内部只能调用const成员函数、static成员函数 非const成员函数可以调用const成员函数const成员函数和非co
2021-06-23 14:44:47
177
原创 static成员变量、函数及其应用
静态成员被static修饰的函数或变量可以通过对象、指针、类名访问不依赖对象静态成员变量相当于全局变量设置了访问权限类内声明,类外初始化。初始化时不带static;如果类的声明和实现分离,在实现中初始化静态成员函数没有this指针。(this只能用在 非静态 成员函数 类)内部只能访问静态成员函数和变量声明和实现分离时,实现不带static构造、析构不能是静态的;虚函数不能是静态的...
2021-06-23 13:15:45
186
原创 信号 槽
connectQObject::connect(&button, &QPushButton::clicked,&app, &QApplication::quit);信号和槽的参数要一致。信号的参数可以多于槽disconnect取消连接connect(button, SIGNAL(clicked()), &a, SLOT(quit()));Qt4写法。缺点不会检查参数错误。自定义信号、槽信号信号只需要声明,不需要实现,返回值void可以发生
2021-06-22 17:09:54
141
原创 多继承 菱形继承 虚继承
菱形继承菱形继承带来的问题 最底层子类从基类中继承的成员变量冗余、重复。 最底层子类访问基类成员变量有二义性。虚继承 解决多继承属性之间的重复问题 虚函数是为了实现多态#include <iostream>using namespace std;struct Person{ int m_age; //virtual void run() = 0; void fun() { cout << "P
2021-06-22 13:14:56
105
原创 虚析构 抽象类
虚析构父类指针指向子类对象时 Base *p = new Son(), delete p 如果析构函数不是虚函数,则只会调用父类析构函数,可能会造成只释放一部分空间。 如何是虚析构,则先调用子类析构,然后调用父类析构。抽象类纯虚函数没有函数体且初始化为0的虚函数,用来定义接口规范抽象类含有纯虚函数的类,不可以实例化(不能创建对象)抽象类也可以包含非纯虚函数,成员变量如果父类是抽象类,子类没有完全重写纯虚函数,那么这个子类依然是抽象类...
2021-06-21 22:13:02
126
原创 汇编分析多态 虚函数表
多态默认情况下,父类指针指向子类对象,只能调用父类中的函数。 Animal *p = new Dog指针p只能调用Animal类中的函数#include <iostream>using namespace std;class Animal {public: void speak() { cout << "animal speak()" << endl; } void run() { cout << "animal ru
2021-06-21 17:02:35
230
原创 正则表达式 (regular expression)
元字符(metacharacter). 单个字符,换行符除外。字符* 匹配前面的子表达式任意次数,包括0次。次数+ 匹配前面的子表达式一次或多次。? 匹配前面的子表达式0次货一次。{} 匹配前面的子表达式指定的次数。贪婪模式和非贪婪模式&...
2021-06-21 14:02:29
180
原创 字符集 字符编码 utf-8签名 chcp
字符集(character set) 字符的集合。字符集种类较多,每个字符集包含的字符个数不同。 常见字符集:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集。字符编码(character encoding) 把字符集中的字符,编码为指定集合中的某一对象,以便文本在计算机中存储和通过通信网络进行传递。 Unicode字符集:可以编码为UTF-8、UTF-16、UTF-32。 GB2312字符集:可.
2021-06-20 20:11:24
380
原创 汇编分析 构造函数相互调用
在{}中调用class Person {public: int m_age; int m_id; Person() { //创建了一个临时对象 Person(10, 20); } Person(int age,int id) { this->m_age = age; this->m_id = id; }}; Person(10, 20);0084206D push 14h 0084206F push 0Ah //.
2021-06-19 17:25:41
154
原创 初始化列表
初始化列表初始化顺序只跟成员声明顺序有关初始化列表与函数默认参数配合使用函数声明与实现分离是 初始化列表只能放在函数实现中 默认参数只能放在函数声明中
2021-06-19 16:34:08
85
原创 误将函数声明当做定义对象
函数声明的坑#include <iostream>using namespace std;#include <cstdlib>class Person {public: int m_age; Person() { cout << "Persson" << endl; } Person(int a):m_age(a) { cout << "Preson(int a) -> " << m_age <&
2021-06-19 10:48:45
74
原创 malloc new 时 堆空间初始化;是否调用构造函数
malloc free//void *malloc(size_t size) //类型 大小char *p = (char *)malloc(4);free(p)new delete// new + 类型int *p = new int;delete p;new[] delete[]//分配数组加[]char *p = new char[4];delete[] p;new初始化int *p1 = new int; //未.
2021-06-18 16:37:34
597
原创 通过对象、指针调用函数时this指针的情况
#include <iostream>using namespace std;class Person {public: int m_id; int m_age; int m_height; void display() { //mov eax,dword ptr[this] //[eax] cout << "m_id :" << m_id //[eax+4] << "\nm_age:" << m_age //[e
2021-06-18 15:34:24
183
原创 this指针将对象的属性和方法关联起来(汇编分析this)
类c++中可以用struct、class定义一个类 struct默认权限是public l;class默认权限是private对象模型属性存放在对象中;方法存放在代码区this指针函数在代码区,属性在对象中(栈、堆)。函数中有this指针,这样就能完成访问。 this指针就是函数的隐式参数,存储函数调用者的地址。...
2021-06-18 12:24:02
148
原创 汇编分析函数调用时栈空间情况
栈栈:往低地址方向生长esp:栈顶指针。通过push、pop操作 push 4:压栈,减 pop eax:出栈,加 call 地址:将下一条指令地址压栈函数调用 test(1, 3);//将函数参数压入栈空间00D21868 push 3 00D2186A push 1 //调用 __empty_global_delete,后jmp到test函数代码,同时将下条指令的地址压栈00D2186C call
2021-06-17 23:17:51
306
原创 a++ 与 ++a
a++先用a,让然a在自增 int a = 10;007A1006 mov dword ptr [ebp-4],0Ah int b = a++ + 2;// b[ebp-8] = a+2 = 12007A100D mov eax,dword ptr [ebp-4] 007A1010 add eax,2 007A1013 mov dword ptr [ebp-8],eax //a[ebp-4] = a+1
2021-06-17 16:52:20
76
原创 if-else switch效率
if-else依次不断比较;switch直接计算相对地址,条件较少时与if-else差不多int main(){ 00F31070 push ebp 00F31071 mov ebp,esp 00F31073 sub esp,0Ch int no = 4;00F31076 mov dword ptr [no],4 switch (no) {00F3107D mov eax,dword.
2021-06-17 16:14:28
80
原创 mov 及常见指令;汇编分析指针、引用、is-else
movmov dest,src 将src的内容赋值给dest[] 中括号内放的为内存地址word(2字节)、dword(4字节)、qword(8字节quad word)a的地址:008FF918h[ebp-8]:8F F920h-8h = a的地址ptr为固定写法Q&A Q:为什么不直接用a的地址 A:这种寻址方式更灵活,程序每次加载到内存的地址不是固定的。变量的地址CPU大部分是小端模式。高存高,低存低(高地址存高字节,低地
2021-06-16 16:22:46
625
原创 汇编语言 0x64
汇编语言种类8086汇编(16bit)x86汇编(32bit)x64汇编(64bit)ARM汇编x64汇编,根据编译器的不同有两种书写格式IntelAT&T项目AT&TIntel说明寄存器名%eaxeaxIntel不带%操作数顺序movl %eax,%edxmov edx,eax将eax的值赋值给edx立即数movl $3,%eax movl $0x10,%eaxmov eax,3 mov eax,0x10
2021-06-15 23:57:56
1508
原创 引用(reference)
引用注意引用就是变量的别名引用必须初始化,一旦指向了某个变量,就不可以改变指向#include <iostream>using namespace std;int main(){ int age = 10; int height = 110; int& refAge = age; refAge = 11; cout << age << endl;//注意区分,这里不是改变指向 refAge = height; refAg
2021-06-15 22:18:49
234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人