
C++
programmercherry
这个作者很懒,什么都没留下…
展开
-
基于VSCode和CMake进行C++多文件编译及调试
“避坑说明:头文件名称不要设置为include,会识别不到,报错”对应文件代码如下:头文件 print.h#ifndef _PRINT_H_#define _PRINT_H_#include <iostream>using namespace std;void print();#endif 源文件 print.cpp#include "print.h原创 2022-05-22 20:52:48 · 4174 阅读 · 0 评论 -
Vscode下中文乱码问题
run code运行程序在Vscode默认编码UTF-8下编程,直接点击运行run code,会出现终端输出中文乱码问题,如下图所示。解决办法:在此终端窗口,命令行输入命令 “ chcp 6500 ” ,然后,直接run code 即可解决中文乱码问题。但是,若关闭此终端窗口,需再次输入命令 “ chcp 6500 ”,否则,还会出现中文乱码。也就是说,run code 情况下,此解决办法不能永久解决中文乱码。F5调试 或 ctrl + F5 运行程序由于Vscode默认编码是UTF-8,调试时原创 2022-05-20 10:24:31 · 3791 阅读 · 2 评论 -
静态库和动态库
Linux系统下 程序运行的三种方式直接运行g++ main.cpp src/swap.cpp -Iinclude -Wall -std=c++11 -o a.out./a.out链接静态库生成可执行文件// 进入src目录下cd src// 汇编 生成swap.o文件g++ swap.cpp -c -I../include// 生成静态库 libswap.aar rs libswap.a swap.o// 回到上级目录cd ..// 链接 生成可执行文件 static_mai原创 2022-01-26 16:20:23 · 1334 阅读 · 0 评论 -
最长等比子序列
#include <iostream>using namespace std;#include <vector>#include <unordered_map>/* 最长等比子序列 */int longestArithSeqLength(vector<int>& A) { if (A.size() == 2) { return 2; } if (A.size() == 3) { ret原创 2021-10-16 20:41:43 · 576 阅读 · 0 评论 -
面向过程与面向对象编程实例
第一章 简单工厂模式题目:要求输入两个数和运算符号,得到结果。1. 面向过程编程#include <iostream>using namespace std;float operationFun(float num1, float num2, char charOper) { switch (charOper) { case '+': return num1 + num2; break; case '-': return num1 - num2; break;原创 2021-09-28 15:31:46 · 711 阅读 · 0 评论 -
常量指针和指针常量
常量指针和指针常量的区别详解* (指针)和 const (常量)谁在前就先读谁;* 象征指针,const 象征内容;谁在前面谁就不允许改变1. 常量指针int a = 10;int b = 20;const int* p = &a; //const在前,定义为常量指针p = &b; //正确,指针的指向可以更改//*p = 20; //错误,指针指向的值不可以改特点:指针的指向(指向的地址)可以修改,但指针指向的值不可以修改(内容不可以重新赋值,内容的改变可以通过修改原创 2021-08-22 11:04:55 · 231 阅读 · 0 评论 -
稀疏矩阵存储
稀疏矩阵存储#include <iostream>using namespace std;#define MAX 100#define ERROR 0#define OK 1typedef int Status; //函数结果状态类型typedef struct { int row, col; //三元组的行号、列号 int item; //三元组的值} Triple;//定义 TripleMatrix 类,每个 TripleMatrix 对象访问一个矩阵的信息原创 2021-08-03 11:02:45 · 170 阅读 · 0 评论 -
大话设计模式(15)——享元模式(Flyweight)
享元模式(Flyweight)享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象网站共享#include <iostream>using namespace std;#include <string>#include <map>class User {private: string name;public: User(string name) { this->name = name; } string GetNa原创 2021-06-22 22:28:11 · 154 阅读 · 0 评论 -
大话设计模式(14)——中介者模式(Mediator)
中介者模式(Mediator)中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。美国和伊拉克之间的对话都是通过联合国安理会作为中介来完成的。#include <iostream>using namespace std;#define SAFE_DELETE(p) {if(p){delete p; p = nullptr;}}class Country;//联合国机构原创 2021-06-22 14:54:46 · 150 阅读 · 0 评论 -
大话设计模式(13)——职责链模式(Chain of Responsibility)
职责链模式(Chain of Responsibility)职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。加薪代码实现#include <iostream>using namespace std;#define SAFE_DELETE(p) {if(p){delete p; p = nullptr;}}//申请cla原创 2021-06-22 10:52:37 · 126 阅读 · 0 评论 -
大话设计模式(12)——命令模式(Command)
命令模式(Command)命令模式(Command):将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。吃烧烤的例子紧耦合设计#include <iostream>using namespace std;#define SAFE_DELETE(p) {if(p){delete p; p = nullptr;}}class Barbecuer {public: void BakeMutton() { co原创 2021-06-22 09:18:58 · 132 阅读 · 0 评论 -
大话设计模式(11)——桥接模式(Bridge)
桥接模式(Bridge)桥接模式(Bridge):将抽象部分(Abstraction)与它的实现部分(Implementation)分离,使它们都可以独立地变化。什么叫抽象与它的实现分离,这并不是说,让抽象类与其派生类分离,因为这样没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。手机品牌和手机软件的关系手机品牌包含手机软件,但是软件并不是品牌的一部分,所以他们之间是聚合关系。#include <iostream>using namespace std;class原创 2021-06-21 19:32:56 · 192 阅读 · 0 评论 -
大话设计模式(10)——单例模式(Singleton)
单例模式(Singleton)单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象对访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。在C++中,是将构造函数、拷贝构造函数以及赋值操作符声明为private权限,来阻止用户实例化一个类。通过类提供一个public权限下的static方法,获得这个类唯一的实例化对象。单线程原创 2021-06-21 17:03:28 · 274 阅读 · 0 评论 -
大话设计模式(9)——组合模式(Composite Fattern)
组合模式(Composite Fattern)原创 2021-06-11 16:45:49 · 143 阅读 · 0 评论 -
大话设计模式(8)——备忘录模式(Memento)
备忘录模式以保存游戏进度为例Memento类定义了内部的状态,而Caretake类是一个保存进度的管理者,GameRole类是游戏角色类。可以看到GameRole的对象依赖于Memento对象,而与Caretake对象无关。#include <iostream>using namespace std;#include <vector>class Memento {public: Memento(int vitality, int attack, int defe原创 2021-06-10 20:48:56 · 212 阅读 · 1 评论 -
大话设计模式(7)——适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern)适配器模式(Adapter):将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类(Adaptee)可以一起工作。实例1#include <iostream>using namespace std;//自带充电器 相当于Adapteeclass OwnCharger {public: void ChargeWithFeetFlat() { cout << "正在使用原创 2021-06-10 14:35:12 · 190 阅读 · 0 评论 -
大话设计模式(6)——状态模式(State Pattern)
状态模式#include <iostream>using namespace std;#include <list>#include <string>class War;class State {public: //不能使用纯虚析构 virtual void Prophase() {} virtual void Metaphase() {} virtual void Anaphase() {} virtual void End() {} vir原创 2021-06-10 09:43:15 · 176 阅读 · 0 评论 -
大话设计模式(5)
原型模式原创 2021-06-09 20:20:58 · 131 阅读 · 0 评论 -
大话设计模式(4)
代理模式没有代理的代码#include <iostream>using namespace std;#include <string>class SchoolGirl {private: string name;public: void setName(string name) { this->name = name; } string getName() { return this->name; }};class Pursuit原创 2021-06-07 20:06:37 · 113 阅读 · 0 评论 -
大话设计模式(3)
**单一职责原则(SRP):**就一个类而言,应该仅有一个引起它变化的原因。**开放-封闭原则:**是说软件实体(类、模块、函数等)应该可以扩展,但是不可修改。对于扩展是开放的(open for extension),对于更改是封闭的(closed for modification)。**依赖倒转原则:**抽象不应该依赖细节,细节应该依赖于抽象。就是针对接口编程,不要对实现编程。高层模块不应该依赖底层模块,两个都应该依赖抽象。**装饰模式(Decorator):**动态地给一个对象添加一些额外的职转载 2021-06-07 16:16:09 · 111 阅读 · 0 评论 -
大话设计模式(2)
第2章 商场促销——策略模式商场收银软件简单工厂模式#include <iostream>using namespace std;//现金收费抽象类class AbstractCashSuper {public: virtual double acceptCash(double money) = 0;};class CashNormal :public AbstractCashSuper {public: double acceptCash(double money)原创 2021-06-06 15:20:52 · 115 阅读 · 0 评论 -
设计原则——依赖倒置原则(DIP)
依赖倒置原则(Dependence Inversion Principle, DIP):依赖于抽象(接口),不要依赖于具体的实现(类),也就是针对接口编程。#include <iostream>using namespace std;//银行工作人员class BankWorker {public: void saveService() { cout << "办理存款业务......" << endl; } void payService() {原创 2021-06-02 20:30:59 · 216 阅读 · 0 评论 -
大话设计模式——工厂模式
要求输入两个数和运算符号,得到结果。#include <iostream>using namespace std;int main() { try { float numberA; cout << "请输入数字A:"; cin >> numberA; char charOperate; cout << "请选择运算符号(+、-、*、/):"; cin >> charOperate; float number原创 2021-06-02 16:02:47 · 272 阅读 · 0 评论 -
循环中的i--和--i
while循环:while(i–) : //先判断,后–,当i = 0 时退出while循环体,但是i还是要–while(–i) : //先–,后判断。for循环:for(int i = 0; i < 10; i++) 和 for(int i = 0; i < 10; ++i) 在运算上是一样的,但在时间运行上会有差别...原创 2021-04-01 15:40:14 · 1568 阅读 · 0 评论 -
学C++的推荐网站
1. cpp referencecpp reference即c++参考手册,这个网站非常简洁,可读性也很强,不但更新及时,还提供了很好的示例cpp reference :https://zh.cppreference.com/w/cpp reference :https://zh.cppreference.com/w/2. learn cpp该网站致力于教你如何用c++编程,无论你之前是否有过编程经验,网站上的教程都能指导你完成编写,编译和调试c++程序的所有步骤,都附有大量的实例learn c转载 2021-01-23 21:14:33 · 3252 阅读 · 0 评论