- 博客(55)
- 收藏
- 关注
原创 电脑日常维护-软件部分
电脑日常维护-软件部分Windows系统开机启动,减少开机启动可以是电脑开机速度加快,部分电脑配置较低,开机启动过多软件,会是电脑一直运行在高负载状态下,系统的各种操作都会非常卡顿,建议除了台内上网认证inod客户端禁止所有其他程序。 查看和修改开机启动Window10 的任务管理器中可以查看和修改,建议不要使用安全管家等软件优化,因为它会列出一些系统进程,如磁盘自动清理和共享流媒体等win系统的自启动进程,后续可能会影响一些如共享、磁盘自动整理功能的开启。电脑硬盘保持C盘(或系统安.
2021-04-30 17:15:27 446 2
原创 排序
#include <iostream>#include <stack>#include <cassert>using namespace std;void PrintArr(int arr[], int size){ for (int i = 0; i < size; i++) cout << arr[i] << ...
2018-03-23 23:54:59 180
原创 二叉树
#include <iostream>#include <cassert>#include <stack>#include <queue>using namespace std;template<class T>struct BinaryTreeNode//二叉树的节点{ BinaryTreeNode(const T v...
2018-03-23 23:43:12 145
原创 C++智能指针
智能指针是用模板实现,创建对象后,对象管理了资源,然后通过析构函数释放掉该资源,以防内存泄漏。auto_ptr(空间管理权限的转移,永远只有一个指针指向动态开辟的空间)#include <iostream>using namespace std;template<class T>class AutoPtr{public: AutoPtr(T* p = NULL) :_
2017-08-17 18:16:39 228
原创 模板的分离编译
给出模板类,但未实例化Sep_Compile.h#include <iostream>using namespace std;template<class T>class Test{public: Test(); T _t;};Sep_Compile.cpp#include "Sep_Compile.h"template<class T>Test<T>::Test()
2017-08-16 22:29:47 230
原创 C++ 类型萃取
类型萃取(图比代码思路清晰)#include <iostream>using namespace std;//结构体定义不同的标签flag是为了区分 内置/自定义类型struct TrueType{};struct FalseType{};template<class T>struct TypeTraits{ typedef FalseType IsPODType;};//
2017-08-03 11:27:30 276
原创 C++ 模板实现Vector和双向链表
模板实现Vector#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>#include <assert.h>using namespace std;template<class T>class Vector{public: Vector() :_pData(new T[3]) ,_size(0)
2017-08-03 10:16:08 1046
原创 C++ 多态
多态:具有多种形式或形态的情况。分为静态多态、动态多态。静态多态:编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推 断出要调用那个函数,如果有对应的函数就调用该函数,否则出现编译错误。包含函数重载、泛型编程。 动态多态:动态绑定:在程序执行期间(非编译期)判断所引用对象的实际类型,根据其实际类型调用相应的方法。必须是虚函数,然后通过基类类型的引用或者指针调用虚函数
2017-07-27 17:40:37 235
原创 C++菱形继承和菱形虚拟继承
单继承&多继承&菱形继承单继承:一个子类只有一个直接父类时称这个继承关系为单继承。多继承:一个子类有两个或以上直接父类时称这个继承关系为多继承菱形继承(钻石继承)存在二义性和数据冗余问题。#include using namespace std;class A{public: int _a;};class B : public A{publ
2017-07-25 22:52:17 320
原创 C++ 继承
继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承关系&访问限定符继承方式与成员访问权限测试代码#include using namespace std;class Person{public: int _age;protected: int _weight;p
2017-07-25 12:17:20 216
转载 C++重载运算符的规则详解
(1)C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。例如,有人觉得BASIC中用“* *”作为幂运算符很方便,也想在C++中将“* *”定义为幂运算符,用“3* *5”表示35,这是不行的。(2)C++允许重载的运算符C++中绝大部分运算符都是可以被重载的。不能重载的运算符只有5个:. (成员访问运算符).*
2017-07-25 09:19:25 1418 1
原创 C++双向链表
#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>#include <assert.h>using namespace std;typedef int DataType;struct Node{ Node(const DataType& data) :_pNext(NULL) ,_pPre(NULL
2017-07-21 14:57:10 234
原创 C++实现顺序表和单链表
#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>using namespace std;class Date{public: Date() { cout<<"Date()"<<endl; } Date(const Date& d) { cout<<"Date(cons
2017-07-20 15:34:43 343
转载 调用约定
在windows平台上的C++编程中经常会看到一些__stdcall, __cdecl, WINAPI, CALLBACK等等关键字在函数前面,在.NET中还有__clrcall, __thiscall等关键字,有时加不加它们都可以,但是有时必须加上,不然编译不过。本文要讨论的就是这些关键字:调用约定(Calling Convention),有时也叫做“函数调用约定”或者“调用规范”。本文采用MS
2017-07-17 15:08:18 499
原创 C++ 引用计数写时拷贝
写时拷贝技术原理 写时拷贝技术是通过"引用计数"实现的,在分配空间的时候多分配4个字节,用来记录有多少个指针指向块空间,当有新的指针指向这块空间时,引用计数加一,当要释放这块空间时,引用计数减一,直到引用计数减为0时才真的释放掉这块空间。当有的指针要改变这块空间的值时,再为这个指针重新分配自己的空间(旧的空间的引用计数减一,新分配的空间引用计数加一)。写法一(有缺陷)#d
2017-07-14 23:51:05 263
原创 C++ String的增删查改
#define _CRT_SECURE_NO_WARNINGS 1#include using namespace std;class String{public: String(char* str = "") :_str(new char[strlen(str)+1]) ,_size(strlen(str)) ,_capacity(strlen(str)) { s
2017-07-14 23:45:13 426
原创 C++深浅拷贝
简单赋值浅拷贝(只赋值拷贝,不重新分配空间)#include #include using namespace std;class String{public: String(char* str = "") :_str(str) {} String(const String& str) :_str(str._str) {} String& operator =
2017-07-08 23:47:00 199
原创 C/C++动态内存管理
C语言动态内存管理(malloc/calloc/realloc/free) int* p1 = (int*)malloc(sizeof(int));//malloc返回值类型为void* int* p2 = (int*)calloc(1, sizeof(int));//动态分配并初始化为0 int* p3 = (int*)realloc(p1, sizeof(int)*2);//当p1
2017-07-08 00:28:26 346
原创 构造拷贝构造的N种调用情况
#define _CRT_SECURE_NO_WARNINGS 1#include using namespace std;class Date{public: Date() { cout"Date()"<<endl; } Date(const Date& d) { cout"Date(const Date& d
2017-07-07 20:42:09 366 1
原创 C++ 日期计算器
#define _CRT_SECURE_NO_WARNINGS 1#include using namespace std;class Date{public: Date(int year = 1900,int month = 1, int day = 1) :_year(year) ,_month(month) ,_day(day) {} //拷贝构造系统默认生成
2017-07-02 07:07:35 667
原创 C++ Complex复数类
#define _CRT_SECURE_NO_WARNINGS 1#include using namespace std;class Complex{public: Complex(double real = 0, double image = 0) :_real(real) ,_image(image) {} Complex(const Complex& d)
2017-07-01 07:14:02 564
原创 C++类和对象--默认成员函数
类(class/struct):数据(成员变量);程序(成员函数)。访问限定符:public(公有),protected(保护),private(私有)。特点:1. public成员可从类外部直接访问,private/protected成员不能从类外部直接访问。2. 每个限定符在类体中可使用多次,它的作用域是从该限定符出现开始到下一个限定符之前或类体结束前。
2017-06-29 21:03:04 378
原创 c++入门基础知识
命名空间:namespace,即名字空间,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。使用“using namespace”可以使得后面不需要每次指定名字空间1)名字空间除了系统定义的名字空间之外,还可以自己定义,定义名字空间用关键字“namespace”,使用名字空间时用符号“::”指定。2)不指定名字空间的变量
2017-06-21 10:41:57 282
原创 linux之信号量
什么是信号量信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用。大于0,资源可以请求,等于0,无资源可用,进程会进入睡眠状态直至资源可用。 当进程不再使用一个信号
2017-06-18 15:30:03 279
原创 C语言实现单链表面试题--进阶
判断单链表是否带环?若带环,求环的入口点ListNode* judge_band(ListNode *pList)//判断单链表是否带环?若带环,求环的入口点?{ ListNode *fast = pList; ListNode *slow = pList; while((fast->next != NULL) && (fast->next->next != NULL)) {
2017-06-16 20:54:39 365
原创 IPC之共享内存
共享内存共享内存(shared memory)是进程间通信中最简单的方式之一。共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。内存模型要使用一块共享内存,进程必须首先分配它。随后需要访问这个共享内存块的每一个进程都必须将这个共享内存绑定到
2017-06-15 11:45:08 318
原创 linux下的简易进度条
# include# includeint main(){ char tar[102]; int i = 0; tar[0] = 0; const char *lable = "|/-\|"; while(i <= 100) { printf("[%-100s][%d%%][%c]\r",tar,i,lable[i%4]
2017-06-14 12:17:59 253
原创 在旋转之后的已排序数组中查找一个数字
图示说明函数实现#include int main(){ int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; int len = sizeof(arr)/sizeof(arr[0]); int i = 0; int j = 0; for(i=0; i<len-1; i++) { for(j=0; j<len-i-1; j++
2017-06-14 10:21:32 236
原创 可变参数列表
可变参数列表源码typedef char* va_list;#define __INTSIZEOF(n) ((sizeof(n) + sizeof(int) - 1) &~ (sizeof(int) - 1))#define va_start(ap, v) (ap = (va_list)&v + _INTSIZEOF(v))#define va_arg(ag,t)
2017-06-14 10:01:25 236
原创 字符操作函数的模拟实现
实现strcpychar *my_strcpy(char *dest, const char *src){ char *ret = dest; assert(dest != NULL); assert(src != NULL); while(*dest++ = *src++) { ; } return ret;}实现strcatchar *my_strcat(ch
2017-06-14 09:44:54 263
原创 C语言实现单链表面试题--基础篇
void Print_TailToHead(ListNode *pList)//从尾到头打印{ if(!pList) { printf("NULL"); return; } Print_TailToHead(pList->next); printf("->%d", pList->data);}void Erase_Notail(ListNode *pos)//删除一个无
2017-06-12 17:46:37 695
原创 单链表(c语言实现)
List.h#pragma once#include #include #include typedef int DataType;typedef struct ListNode{ DataType data; struct ListNode *next;}ListNode;void PrintList(ListNode *pList);//从头到尾打印void P
2017-06-09 13:11:03 434
原创 顺序表(动态)
SeqList.h#pragma once#include #include #include #include #define DEFAULT_SZ 10#define DEFAULT_INC 10typedef int DataType;typedef struct SeqList{ DataType *pData;//指向数据的存储位置 int sz;//有
2017-05-31 13:15:13 286
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人