C++
yan-mario
这个作者很懒,什么都没留下…
展开
-
拷贝构造函数、赋值运算符重载函数
一.本章主要介绍类中的编译器提供的拷贝构造函数和自定义拷贝构造函数、赋值运算符重载函数 用同类型对象初始化新对象时用到外部资源时需要调用自己定义的拷贝构造函数,防止发生浅拷贝 用同类型对象赋值给已存在的同类型对象在调用赋值运算符重载函数时,防止发生浅拷贝、内存泄漏、自赋值 接下来,上代码头文件//// Created by yanpan on 2018/9/...原创 2018-09-05 15:52:02 · 866 阅读 · 0 评论 -
继承多态 一
继承有三种继承方式,public继承、protected继承、private继承 基类成员的访问权限在派生类里必须是 <= 继承方式的继承方式 基类的public成员 基类的protected成员 基类的private成员 public继承 仍是public成员 仍是protected成员 被派生类继承,但是不可见 protected...原创 2019-05-06 21:53:46 · 401 阅读 · 0 评论 -
c++中的四种类型强转
坚持✊在语言里边的类型强转:int main(){ int *ptr; char *qtr; qtr = (char*)ptr; return 0;}c++里边有四种强制类型转换:caonst_cast: 去掉变量的const属性 static_cast: 编译器认为可以支持的强转,安全性较高 reinterpret_cast: 和c的强...原创 2019-05-06 21:54:03 · 555 阅读 · 0 评论 -
智能指针 --- 循环引用问题、解决办法
上一篇介绍了四种智能指针,四种智能指针的特点及使用方法看段代码:class B;class A{public: A(){ cout << "A()" << endl; } A(int i):a(i){ cout << "A(int)" << endl;} ~A(){ cout << "~A()" ...原创 2019-05-10 17:55:08 · 615 阅读 · 0 评论 -
写出高效的c++代码——函数返回值的优化
函数返回值4字节是通过寄存器带回来的,大于4字节小于8字节通过两个寄存器带回来,大于8字节通过临时对象带回来/* * 写出高效c++代码,函数返回值的优化 */#if 1#include <iostream>using namespace std;class Test{};Test GetObject(Test t){ int value = t....原创 2019-05-06 21:53:26 · 955 阅读 · 0 评论 -
输出给定字符串的连续子串
//时间复杂度 O(n三次方)void AllSubString(char *str, int len){ int i = 0; for(; i < len; i++) { for(int j = i; j < len; j++) { for(int k = i; k < j; k++) ...原创 2019-05-07 13:20:49 · 720 阅读 · 0 评论 -
智能指针 --- 一
C++中的智能指针是用来管理外界资源的,如在堆上边new的资源,当程序还没来得及执行delete操作,函数遇到异常了,没有释放资源,导致内存泄露 如下代码:void fun(){ A *ptr = new A(); /*... ...*/ //程序可能在这行代码中抛出异常,导致ptr所指向堆上的资源没有释放 delete ptr...原创 2019-05-10 17:54:59 · 3135 阅读 · 0 评论 -
虚析构函数的深度解析
析构函数为什么要写成虚函数,什么情况下写成虚函数,写成虚函数解决了什么问题, 解决问题的深层原理是什么?前边都是表层,最后一个问题也困扰我了好一阵..// Created by yanpan on 2019/5/10.#include <iostream>using namespace std;class Base{public: Base(){cout ...原创 2019-05-10 17:33:06 · 229 阅读 · 0 评论 -
智能指针 --- 0
这篇文章不提任何的智能指针,看一段代码、示例一:#include <iostream>using namespace std;class test{public: test(){cout << "test()" << endl;} ~test(){cout << "~test()" << endl;}...原创 2019-05-10 17:54:48 · 216 阅读 · 0 评论 -
智能指针 --- 实现
智能指针的功能前边文章已经介绍了接来下来实现一遍智能指针 注释稍后在加//// Created by yanpan on 2019/5/9.///*智能指针的实现*/#if 1#include <iostream>#include <memory>using namespace std;template <class T&g...原创 2019-05-10 17:56:18 · 267 阅读 · 0 评论 -
leetcode---5
给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd" 输出: "bb"class Solution {public: string longestPalindrome(string s) ...原创 2019-05-28 17:57:41 · 82 阅读 · 0 评论 -
迭代器失效问题
在序列容器里,删除了当前的iterator 导致后边所有元素的迭代器都会失效 增加一个元素也会导致后边的元素进行移动 因为vector、deque是序列容器,使用连续分配的内存,删除当前元素,后边的所有元素都会向前移动一个位置,之后数据的地址发生了变化,之前的迭代器根据原有容器的信息访问不到正确的内容。使用earse方法删除元素的时候 erase方法会返回下一个元素的迭代器(...原创 2019-08-13 17:44:45 · 204 阅读 · 1 评论 -
string类的实现
string类的实现构造函数、拷贝构造函数、赋值函数、析构函数的实现#if 1#include <iostream>using namespace std;class MyString{public: MyString(const char* str) { if(str == NULL) { ...原创 2019-08-15 09:54:13 · 117 阅读 · 0 评论 -
hash表的实现
hash应用非常多,当问到大数据处理时 要求实现一个hash的时候可能有点懵...下边时hash表的实现,散列容器,用的是拉链法,带注释//// Created by yanpan on 2019/8/12.//#if 0#include<iostream>using namespace std;#define M 13 //初始化13个tablet...原创 2019-08-15 09:58:25 · 155 阅读 · 0 评论 -
c++类对象的生存周期 二
构造了一个Test的类代码如下://// Created by yanpan on 2019/4/21.//#if 1#include <iostream>using namespace std;class Test{public: Test(int a = 10, int b = 10):_a(a),_b(b) //带有默认值的构造函数 ...原创 2019-05-01 21:10:44 · 147 阅读 · 0 评论 -
c++类对象的生存周期 一
构造函数:用来初始化对象的,自动调用的成员方法构造函数是可以重载的 如果在设计类的时候没有自己实现构造函数,则编译器会生成一个默认的构造函数,反之编译器则不会生成默认的构造函数拷贝构造函数:同构造函数的两点 编译器默认生成的拷贝构造函数会发生浅拷贝 拷贝构造函数的形参必须是引用,防止发生递归调用拷贝构造函数赋值运算符重在函数:编译器默认生成的是一个会发生浅拷贝的赋值运算符重...原创 2019-05-01 21:10:34 · 326 阅读 · 0 评论 -
普通成员方法、静态成员方法、常成员方法的总结
普通的成员方法调用的时候必须依赖一个对象 可以访问私有的、保护的成员 类的作用域中 可以调用静态成员方法 可以调用常成员方法static成员方法能访问部分私有的、保护的成员 eg:静态成员变量 类的作用域中常成员方法调用的时候必须依赖一个对象 可以访问私有的、保护的成员 类的作用域中 可以调用静态成员方法上代码://// Created by yanp...原创 2018-09-12 14:26:13 · 1662 阅读 · 0 评论 -
C++复习
佳佳笔记中运算符重载 :用类类型定义对象时 运算符重载意义 静态成员变量、静态成员方法 初始化列表 友元类和友元函数 还没发现在哪个位置 模版 迭代器 容器STL的方法:方法的区别与运用 map set 范型算法与容器 容器适配器 空间配置器 函数对象(绑定器、取反器) 范型算法 刨析vector源码 设计模式...原创 2018-09-10 06:51:24 · 82 阅读 · 0 评论 -
c++中的
先保存代代码//// Created by yanpan on 2018/9/10.//#if 1 /************** 用函数模版实现范型冒泡排序算法 *********************/#include <iostream>#include <ctime>using namespace std;te...原创 2018-09-11 09:41:52 · 307 阅读 · 0 评论 -
剑指offer— (1) 赋值运算符函数
题目描述: 如下为类型CMyString的声明,请为该类型添加赋值运算符函数。实现如下: 是我的解法,适合C++初级程序员//// Created by yanpan on 2018/9/30.//#if 1#include <iostream>using namespace std;class CMyString{public: CMySt...原创 2018-09-30 20:08:07 · 275 阅读 · 0 评论 -
单列模式实现
单例模式的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例,即一个类只有一个对象实例懒汉模式:懒汉模式是第一次用到类的时候才会去实例化 //// Created by yanpan on 2018/9/30.// 实现单例模式#if 1#include <iostream>#include <pthread.h>...原创 2018-10-08 11:34:44 · 127 阅读 · 0 评论 -
C语言中的struct——内存对齐
sizeof计算结构体大小的时候具体是怎样计算的内存对齐的原则是根据最宽数据类型的大小进行对齐的struct A{ char a; 1+1 short b; 2 int c; 4};大小是8个字节要进行内存对齐,是根据int -> 4个字节对齐的|char|---|short | 4字节|------int------| ...原创 2018-10-16 21:40:55 · 790 阅读 · 0 评论 -
const 与define 的区别
关键字const是用来定义常变量的,一个变量如果被const修饰那么他的值就不能被改变还有#define,#define是在预编译的时候进行处理的先讲讲#define的用法#include <stdio.h>#define CALC(x) x*xint main(){ int number = CALC(5 + 5) / (2 + 2); prin...原创 2018-10-16 21:41:15 · 182 阅读 · 0 评论 -
C++下的静态库与动态库
C++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库...转载 2018-10-10 10:39:36 · 158 阅读 · 0 评论 -
!Leetcode
字节跳动的面试算法题:合并K个有序的元素个数为N的数组思想将数组的首元素建立一个大根堆,然后进行堆调整,代码有注释//// Created by yanpan on 2019/3/26.// 字节跳动的手写算法题 2019春招#if 0#include <iostream>#include <vector>#include <algorithm...原创 2019-03-27 09:30:50 · 357 阅读 · 0 评论 -
回朔算法
回朔算法的思想很简单,每一步都是尝试,如果正确进行下一步,如果不正确则回退,回退到上一步或者原点。 为了优化时间,不必要的搜索要进行剪枝操作常见的深度优先搜索就是回朔法的思想,来几道经典的回朔法。1.https://leetcode-cn.com/problems/combination-sum/ 代码有注释,今天时间紧急,后边有时间画图放上边加以理解class Soluti...原创 2019-08-15 11:57:17 · 705 阅读 · 0 评论