
C++
sofia_m
这个作者很懒,什么都没留下…
展开
-
【C++】浅析浅拷贝,深拷贝及写时拷贝(copy_on_write),模拟实现String类。
要了解C++中的浅拷贝,深拷贝,写时拷贝,我们先来根据以下步骤来逐步了解:什么是浅拷贝? 浅拷贝会出现什么问题? 什么是深拷贝?实现String类深拷贝-普通版实现String类深拷贝—简洁版什么是引用计数,用引用计数实现String时,引用计数可以用普通的成员变量和类的静态成员变量吗? 为什么?完成引用计数版本的String类—该引用计数也属于浅拷贝 完成COW(写时拷贝版的St...原创 2017-11-09 16:24:37 · 643 阅读 · 0 评论 -
各类排序算法模拟实现
1、插入排序类1.1 直接插入排序时间复杂度O(n^2) 空间复杂度O(1) 1.1.1 基本思想:每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的合适位置上去,直到元素全部插完位置。1.1.2 源码#include<stdio.h>#include&amp原创 2018-06-09 23:13:20 · 752 阅读 · 0 评论 -
【C++】到底买不买
题目描述[编程|20分] 到底买不买(20) 时间限制:C/C++ 1秒,其他语言 2秒 空间限制:C/C++ 32768K,其他语言 65536K 64bit IO Format: %lld 题目描述 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一 下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么...原创 2018-06-30 15:35:51 · 723 阅读 · 0 评论 -
【剑指offer】面试题7----用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。原创 2018-07-31 18:17:54 · 237 阅读 · 0 评论 -
【C++】C++复习----多态
1、多态概念多态一词最初来源于希腊语,意思是具有多种形式或形态的情形。同一个事物,在不同场景之下的多种形态。在C++里,多态的意思是提供一个接口,但是可以有多种实现方式。比如学校餐厅的大门是一个接口,买饭的人从这个接口进去,想买重庆小面的人去重庆小面窗口,想买鸡排饭的人去鸡排饭窗口。多态分为静态多态和动态多态两种:静态多态: (函数重载,泛型编程)编译器在编译期间完成的,...原创 2018-08-18 18:44:37 · 404 阅读 · 0 评论 -
【C++】C++复习----详解引用
1、引用的定义引用是给一个已经定义过的变量重新起的别名,对其操作时相当于对变量直接进行操作;编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。就类似于小时候别人给你起的外号。定义格式:int a=10;int &b=a;2、引用的特点引用在定义时必须被初始化。一个变量可以有多个引用。引用一旦绑定了一个实体,就不能在改变为其他变量的引用...原创 2018-08-17 19:59:15 · 419 阅读 · 0 评论 -
【C++】C++复习----C++异常处理
C语言异常处理C语言异常处理1、原创 2018-08-23 23:28:41 · 2311 阅读 · 1 评论 -
【C++】C++复习----解析智能指针
1、智能指针智能指针是为了方便管理动态内存,防止产生内存泄漏,而对指针进行的一层封装,可以通过析构函数,构造函数,赋值运算符重载的处理,而实现的可以自动管理指针所指向的动态内存,防止产生内存泄漏。资源分配即初始化(RAII):定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。之前的版本中有 auto_ptr,在...原创 2018-08-21 18:09:30 · 333 阅读 · 0 评论 -
【C语言】C程序中正则表达式的使用
1、C/C++中的正则表达式标准的C和C++都不支持正则表达式的使用,但是在某些场景下正则表达式的存在可以为程序员带来很大的遍历,比如用户注册中对用户名和密码的判断,看是否符合命名规则。虽然不支持,但是有一些函数库可以帮助我们实现在C中使用正则表达式的诉求。比如Linux中带有的Perl-Compatible Regular Expression库。C语言中处理正则表达式的函数有r...原创 2018-08-25 15:36:45 · 24581 阅读 · 1 评论 -
【剑指offer】一、赋值运算符函数
题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数:class CMyString{public: CMyString(char* p_Data = NULL); CMyString(const CMyString& str); ~CMyString(void);private: char* m_pData;};...原创 2018-01-26 20:30:17 · 482 阅读 · 6 评论 -
【数据结构】二叉树的基本操作
求取二叉树的深度解析博客用非递归实现二叉树的前序,中序,后序遍历解析博客源码:bintree.h#pragma once#ifndef __BINTREE_H__#define __BINTREE_H__#include#include#include#includeusing namespace std;//二叉树节点templateclass原创 2018-01-04 19:12:12 · 763 阅读 · 0 评论 -
【C++】模拟实现一个日期类,实现基本重载运算符等
模拟实现一个日期类,实现重载运算符 +,-,+=,-=,++,--,>,<,=,==等原创 2017-11-01 18:38:18 · 977 阅读 · 0 评论 -
【C++】this指针解析
系统隐式的将对象的起始地址传递给成员函数,使this指针得到当前对象的地址。当不同的对象调用同一个类的成员函数代码时,编译器会依据该成员函数的this指针所指向的不同对象来确定应该引用哪个对象的数据成员。原创 2017-10-24 16:43:48 · 826 阅读 · 1 评论 -
【C++】模拟实现一个复数类,要求实现 加,减,乘,除等基本运算符的重载
Complex.h 文件#ifndef __COMPLEX_H__#define __COMPLEX_H__#includeusing namespace std;class Complex{public: Complex(double real,double image) :_real(real) ,_image(image) { } Complex opera原创 2017-11-03 10:37:16 · 6635 阅读 · 0 评论 -
【C++】动态内存管理(new,delete,new[],delete[])
C语言动态内存开辟 C语言使用malloc/calloc/realloc进行动态内存开辟,malloc/calloc/realloc在堆上开辟一段空间,free将开辟的内存释放掉。链接: (C语言)动态内存开辟[注意]: 堆上的内存需要用户自己来管理,动态malloc/calloc/realloc的空间,必须free掉,否则会造成内存泄露;栈上空间具有函数作用域,在函数结束后系统自动回原创 2017-11-03 18:24:31 · 1653 阅读 · 1 评论 -
【C++】浅析C++中的继承
目录1. 继承基本概念2. 派生类的默认成员函数3. 继承体系内的作用域4. 继承与转换–赋值兼容规则–public继承5. 友元与继承&继承与静态成员6. 单继承&多继承&菱形继承7. 虚拟继承&菱形虚拟继承(重要)1.继承基本概念1.1 【继承含义】继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新原创 2017-11-21 22:59:17 · 599 阅读 · 0 评论 -
【C++】Perm递归全排列函数分析
void Perm(int* array, int size, int N) { if(N == size) { for(int i = 0; i < size; ++i){ cout<<array[i] ; } cout<<endl; } else { for(int i = N; i < size; ++i){ Perm全排列函数过程分析,时间复杂度分析。原创 2017-12-21 17:28:18 · 6465 阅读 · 0 评论 -
用频域最小误差平方方法设计线性相位FIR低通数字滤波器
用频域最小误差平方方法设计线性相位FIR低通数字滤波器【C++实现】设计一个20阶的FIR低通数字滤波器,其通带边界频率为0.2,阻带边界频率为0.3,采用一阶样条函数作为过渡带。选择参数: 采样频率=l,tp=1。原创 2018-01-04 15:07:52 · 3067 阅读 · 1 评论 -
【数据结构】二叉树经典面试题解析二:求取二叉树的深度
二叉树的基本操作:二叉树的基本操作 博客例子:源码:size_t _Depth(Node* root) { if (NULL == root) { return 0; } if (NULL == root->_left && NULL == root->_right)原创 2018-01-08 16:03:27 · 670 阅读 · 0 评论 -
【C++】C++中的四种强制类型转换
1、static_cast关键字【格式】:static_cast <类型说明符> (变量或表达式)【主要用法】:用于类层次结构中基类和派生类之间指针或引用的转换;进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类的指针或引用转换成派生类表示,没有动态类型检查)是不安全的;用于基本数据类型之间的转换;把空指针转换成目标类型的空指针;把任...转载 2018-09-06 15:36:34 · 324 阅读 · 0 评论