C++
qq_38131333
这个作者很懒,什么都没留下…
展开
-
菱形继承&菱形虚拟继承
菱形继承(钻石继承)模型:代码实现:原创 2017-08-05 20:08:33 · 222 阅读 · 0 评论 -
旋转数组的最小数字
一、题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。二、解题思路采用二分法解答这个问题,mid = low + ((high - low)>&...原创 2018-08-06 08:39:35 · 88 阅读 · 0 评论 -
c++动态内存管理相关知识
1.c语言动态内存管理c语言使用malloc、calloc、realloc、free进行动态内存管理Void test(){ int* p1 = (int*)malloc(size(int)*4); int* p2 = (int*)calloc(4,sizeof(int)); int* p3 = (int*)realloc(p2,sizeof(int)*6);...原创 2017-07-19 13:57:39 · 290 阅读 · 0 评论 -
引用,const引用,指针
引用,const引用,指针一、引用(1)定义:引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。(2)声明方法: 类型&引用变量名=已定义过的变量名。(3)特点:l 一个变量可以取多个别名,但引用与其所代表的变量共享同一内存空间(类比人的别名)l 引用必须初始化,且必须声明引用的类型l 引用只能在初始化的...原创 2017-07-22 17:08:52 · 266 阅读 · 0 评论 -
写时拷贝
写时拷贝 写时拷贝是浅拷贝解决浅拷贝析构冲突的一种解决方案,写时拷贝也叫延时拷贝,几个对象共用一块空间,当执行读操作时不会有影响,当你需要进行写操作改变一个对象的内容时,空间的值不能被修改,会互相影响,那么就需要单独开辟一块空间将对象拷贝过去然后改,不改变就不需要开辟。 写时浅拷贝与深拷贝比...原创 2017-07-25 11:38:31 · 368 阅读 · 0 评论 -
函数重载解析
C++函数重载的实现原理1.函数重载的概念 在同一个作用域类,一组函数的函数名相同,参数列表不同(参数个数不同/参数类型不同),返回值可同可不同。2.函数重载的作用 用来在同一个作用域内,用同一个函数名,命名一组功能相似的函数,这样做减少了函数名的数量,避免...原创 2017-08-01 21:16:40 · 304 阅读 · 0 评论 -
递归与非递归的各种写法
一.(1)递归写斐波那契数#include#includeint fib(int n){ if (n { return 1; } else { return fib(n - 1) + fib(n - 2);原创 2017-06-22 11:31:57 · 909 阅读 · 0 评论 -
C++实现顺序表简单功能
实现代码:typedef int DataType;class SeqList{private: DataType* _a; size_t _size; size_t _capacity; void CheckCapcacity() { if (_size == _capacity) { size_t NewCapacity = _capacity ? _原创 2017-07-28 11:57:08 · 504 阅读 · 0 评论 -
双向链表的简单实现
代码实现#include#includeusing namespace std;typedef int DataType;struct ListNode{ ListNode* _next; ListNode* _prev; DataType _data; ListNode(DataType x) :_data(x) , _next(NULL) , _pr原创 2017-07-30 21:10:42 · 180 阅读 · 0 评论 -
C++多态&多态模型
多态&多态模型一、什么是多态? 多态顾名思义就是一个事物有多种形态,在C++程序设计中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数,即“一个接口,多种方法”。多态分为两种: (1)静态多态(重载函数、模板等);(2)动态多态(虚函数等)。构成多态的条件:(1)虚函数的重写。(子类可以不用写virtual,但父原创 2017-08-02 21:23:18 · 462 阅读 · 0 评论 -
简单实现栈和队列以及其面试题
1.实现基本栈和队列。(1)栈#pragma once#include#include#include using namespace std;templateclass Stack{public: Stack() :_a(NULL) , _size(0) , _capacity(0) {} ~Stack() { if (_a) {原创 2017-10-14 15:35:46 · 184 阅读 · 0 评论 -
智能指针浅析
智能指针一、什么是智能指针? 资源分配即初始化,定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。 对于编译器来说,智能指针实际上是一个栈对象,并非指针类型,在栈对象生命期即将结束时,智能指针通过析构函数释放有它管理的堆内存。所有智能指针都重载了“operator->”操作符,直接返回对象的引用,用以操原创 2017-09-13 16:21:23 · 245 阅读 · 0 评论 -
Vector和List的使用
一、vector vector像一个容器一样可以存放各种类型的对象,它是一个能够存放任意类型的动态数组,能够增加和压缩数据。使用vector,需要在头文件中包含#include 1、简单模拟实现vector:void print_vector(const vector& v)//迭代器失效{ vector::const_iterator it = v.begin();原创 2017-09-24 10:52:17 · 369 阅读 · 0 评论 -
C++运算符的优先级以及结合性
运算符的优先级和结合性*优先级一列 数字越小 优先级越大 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 后置++ 后置自增运算符 变量名++ 左到...转载 2018-08-14 21:56:40 · 701 阅读 · 0 评论