c++
dancer_0405
我有一个执着的心,只要认准了一个方向我会一直走下去,因为我知道:付出+汗水=成功。
展开
-
LRU缓存淘汰
这里写自定义目录标题模板代码实现小技巧模板代码实现#pragma once#include<iostream>#include<unordered_map>template<typename Node>struct DListNode{ int key_ = 0; Node* value_ = nullptr; DListNode* pre_ = nullptr; DListNode* next_ = nullptr; DListNode(){}原创 2021-01-06 20:17:32 · 158 阅读 · 0 评论 -
根据唯一id生成分享码
标题根据唯一id生成分享码#include <math.h>#include <string>using namespace std;const string share_code_62 = "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";string create_share_...原创 2020-04-17 20:11:12 · 5578 阅读 · 0 评论 -
快排详解
#include"Sort.h"void QuickSort(int* arr, int start,int end){ int i = start; int j = end; int base = arr[start]; if (i > j) { return; } while (i < j) { while (i < j && ...原创 2019-07-09 23:14:38 · 497 阅读 · 0 评论 -
c++map嵌套map
头文件#ifndef __AOI_H__#define __AOI_H__#include <iostream>#include <map>using namespace std;class A {public: void AddSkill(int useID, int skillID);private: struct Info { map<...原创 2019-06-18 13:37:03 · 2505 阅读 · 0 评论 -
智能指针的底层实现
引入:定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理。 boost库的智能指针 auto_ptr:资源转移,当使用拷贝构造,赋值操作时将资源转移,并将自己的资源置为空 加权限,当使用拷贝构造,赋值操作时资源不释放,只是将权限改为false,当权限为true时&&资源不为空时,才可以释放资源。 scoped_ptr:原创 2017-09-10 14:33:07 · 1544 阅读 · 0 评论 -
c++动态内存管理
c语言中我们学习了malloc,calloc,realloc,free这四个函数,前面都是c语言用来动态申请内存的函数(他们都是在堆上申请内存)最后一个函数是释放前面三个所申请的空间。 返回值:成功的话返回所申请空间的地址,失败返回NULL。 下面我们看看malloc,calloc,realloc他们的不同。 1. malloc:函数原型为void *malloc( size_t size原创 2017-07-28 09:51:18 · 744 阅读 · 0 评论 -
c++-----string和深浅拷贝
深浅拷贝 浅拷贝主要存在的问题就是同一块内存释放多次。所以引入深拷贝来解决这些问题。 下面通过代码看下浅拷贝存在的问题class String{public: String(const char* str); String(String& str); String& operator = (String& str); ~String();private:原创 2017-07-26 13:44:07 · 264 阅读 · 0 评论 -
c++实现线性表和双向链表
深浅拷贝:深浅拷贝主要解决的问题是同一块内存释放多次 浅拷贝深拷贝c++实现线性表 SeqList.h#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#includeusing namespace std;typedef int DataType;class SeqList{pu原创 2017-07-21 15:33:00 · 346 阅读 · 0 评论 -
c++继承(单继承,多继承,菱形继承和虚继承)详解
下面我将从继承实例(代码 ),继承对象模型和原理来分析继承。 单继承 模型 代码class A{public: int _a;};class B:public A{public: int _b;};int main(){ B b; b._a = 0; b._b = 1; return 0;}代码分析: 多继承 模型原创 2017-07-21 14:36:32 · 715 阅读 · 0 评论 -
c/c++常见面试题(一)
1.c++的三大特性是什么?说说你对面向过程和面向对象的理解? 三大特性是:封装,继承,多态。 面向过程:倾向于做一件事的流程,先做什么,然后做什么,最后做什么。更接近与计算机的实际计算模型 面向对象:倾向于建立一个对象模型,他能够近似的反应实体与实体之间的关系。它具有封装,继承,多态三大特点,更好的提高的代码的安全性和效率。 2.什么是函数重载?c语言为什么不原创 2017-07-17 10:34:10 · 336 阅读 · 0 评论 -
c++引用,指针
1.什么是引用 引用不是定义一个变量,而是给一个已经定义的变量新起一个别名 引用的格式:类型&引用变量名=已定义过的变量名 引用的特点: (1)一个变量可取多个别名 (2)引用必须初始化(特别重要) (3)引用只能在初始化的时候引用一次,不能改变为再引用其他的变量 2.下面我通过代码向大家展示引用的做用和特性 (1)一般引用,类型前不用任何词来修饰,你可以这样原创 2017-07-03 18:37:57 · 257 阅读 · 0 评论 -
c++函数重载的实现原理
1.c++问什么引入函数重载 在c语言中,如果我们写两个函数名相同的函数,编译器会告诉我们,函数重定义的错误。我们还会遇到下面这个问题:如果我们写一个计算int类型的加法,另一个计算double类型的加法,我们必须起两个不同的函数名。而在c++中我们可以解决这两个问题。我们可以用相同的函数名,只有参数列表不同可以。 2.函数重载的条件 (1)要求重载的函数必须在同一个作用域 (2)函原创 2017-07-03 10:37:40 · 454 阅读 · 0 评论 -
c++日期类
#define _CRT_SECURE_NO_WARNINGS#include<stdlib.h>#include<stdio.h>#include<iostream>using namespace std;class Date{ friend ostream& operator<<(ostream &io, const Date& d); friend istream&原创 2017-07-10 18:23:55 · 319 阅读 · 0 评论