- 博客(35)
- 收藏
- 关注
转载 C++代码风格
谷歌C++代码风格被大多数人推荐,mark一下:http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/转载于:https://www.cnblogs.com/CoderZSL/p/8663340.html...
2018-03-28 13:32:00
202
转载 单例模式
单例模式就是一个类只有一个实例。为了保证一个类只有一个实例。为了保证一个类只有一个实例,要保证一开始这个类只有唯一一个实例,并且不能进行拷贝等赋值和移动操作。因此有两种实现方式,第一个是懒汉实现,在需要的时候实例化,另一种是饿汉实现,一开始就实例化。//懒汉实现/***注意C++11以后加入了移动操作,也有了新语法=delete,**但是为了格式整齐,统一让他...
2018-03-09 23:03:00
120
转载 malloc与new,free与delete
malloc,free是一种库函数,不能被重载,new和delete是运算符,可以被重载new和delete内部都调用malloc和free函数new的三种用法:1.new,不可以被重载 直接new一个对象 T* ptr = new T(); new一个对象时做了两件事情* 调用了operator new申请空间* 调用了构造函数...
2017-12-18 11:19:00
136
转载 ZSL_List
//边写边改#ifndef __ZSL_LIST_H__#define __ZSL_LIST_H__#include <iostream>//for size_t,ptrdiff_t,initializer_listtemplate <typename T>struct node_base{ node_base *pre;...
2017-12-15 16:09:00
186
转载 12.1动态内存与智能指针
1.shared_ptr<>:允许多个指针指向同一个对象初始化方式: shared_ptr<int> p1 = make_shared<int>(10);//最好使用这种方式 shared_ptr<int> p2(new int(20)); //只能用直接初始化方式和普通指针有一样的操作,*...
2017-12-02 22:11:00
108
转载 13.6对象移动
1.左值和右值左值:非临时对象,可以在多条语句里面使用的对象。右值:临时对象,只能在本条语句里面使用。如:int i = 0;//i是持久对象,能在多条语句里面使用,0是临时对象,只能在本条语句里面使用2.左值引用和右值引用在C++11以前,右值不能被引用,最大限度就是用常量引用绑定一个右值:const int &a = 1左值引用:&右值...
2017-12-02 20:02:00
115
转载 ZSL_String
模仿STL标准库,无单独空间配置器alloc,无萃取机traits,无反向迭代器,end_of_storage配置不同于标准库,空间配置用了placement new,new,delete部分函数还没写,还未测试完全,后面会慢慢修改#ifndef __ZSL_String__#define __ZSL_String__#include <iostream>...
2017-11-12 22:33:00
135
转载 删除公共字符
//----------------------------------删除公共字符------------------------------///*题目描述输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:每...
2017-11-01 20:04:00
123
转载 集合
//------------------------------------集合---------------------------------///*题目描述给你两个集合,要求{A} + {B}。 注:同一个集合中不会有两个相同的元素。输入描述:每组输入数据分为三行,第一行有两个数字n,m(0 ≤ n,m ≤ 10000),分别表示集合A和集合B的元素个数。后...
2017-11-01 19:36:00
158
转载 幸运数
//------------------------------------幸运数---------------------------------///*题目描述小明同学学习了不同的进制之后,拿起了一些数字做起了游戏。小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中,二进制数也很常用。现在对于一个数字x,小明同学定义出了两个函数f(x)和g(x)。 f(x...
2017-11-01 19:29:00
117
转载 整数加法
//------------------------------------整数加法---------------------------------///*题目描述请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error输入描述:输入为一行,包含两个字符串,字符串的长度在[1,100]。输出描述:输出为一行。合法情况输出相加...
2017-11-01 19:25:00
115
转载 filename
//------------------------------------filename---------------------------------///*题目描述Please create a function to extract the filename extension from the given path,return the extracted ...
2017-11-01 19:17:00
233
转载 身份证分组
//------------------------------------身份证分组----------------------------------///*题目描述18位身份证的编码规则是:前1、2位数字表示:所在省(直辖市、自治区)的代码第3、4位数字表示:所在地级市(自治州)的代码第5、6位数字表示:所在区(县、自治县、县级市)的代码;第7—14...
2017-11-01 19:15:00
254
转载 统计字符
//------------------------------------统计字符----------------------------------///*题目描述给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符。输入描述:输入数据一个字符串,包括字母,数字等。输出描述:输出首先出现三次的那个英文字符示例1输入...
2017-11-01 19:13:00
215
转载 水仙花数
//------------------------------------水仙花数----------------------------------///*题目描述春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在...
2017-11-01 19:12:00
106
转载 句子反转
//------------------------------------句子反转----------------------------------///*题目描述给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。输入描述:输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)...
2017-11-01 19:07:00
82
转载 ZSL_Vector
最近事情太多了,是在没时间更新,刚好最近也在读标准库源码,其实开始已经写过自己的string类,但是发现和标准库相差甚远,所以会重新写一下,这次花了两个小时不到模仿了标准库的vector,可能内部实现方式有点点不一样,因为标准库是把对象构造和析构,空间的配置和销毁是分开的,因为我看的SGI的STL,空间配置器那部分涉及太多内存操作,包括内存池等,这都是需要很深厚的功力才能完成,学生狗一只...
2017-11-01 18:56:00
115
转载 条款10:令operator=返回一个reference to *this
operator= 赋值运算符,目的是想给当前对象赋值一个新的值。比如:有一个类A:A myclass1;A myclass2;myclass1 = myclass2; //调用赋值运算符返回值为对象的引用目的是为了连锁赋值x = y = z = 0;为了实现连锁赋值,赋值运算符必须返回一个reference指向操作符左侧的对象。转载于:https:...
2017-10-13 23:26:00
96
转载 101.Symmetric Tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree [1,2,2,3,4,4,3] is symmetric: 1 / \ ...
2017-10-13 23:17:00
79
转载 643:Maximum Average Subarray I
Given an array consisting of n integers, find the contiguous subarray of given length k that has the maximum average value. And you need to output the maximum average value.Example 1:Input: [...
2017-10-12 14:36:00
57
转载 14:操作重载和类型转换
1.不可以重载的运算符: ::, .*, ., ? :。2.一元重载:只有一个参数 二元重载:有两个参数,左侧运算对象传递第一个参数,右侧运算对象传递第二个参数。在类外:void operator+(int, int)类内:Name operator(int)。因为会有一个隐含的this指针,因此参数会少一个。除了operator()之外,其他重载运算符不能...
2017-10-08 19:28:00
109
转载 695. Max Area of Island
题目:Given a non-empty 2D arraygridof 0's and 1's, anislandis a group of1's (representing land) connected 4-directionally (horizontal or vertical.) You may assume all four edges of the grid ...
2017-10-08 19:17:00
97
转载 2.5:处理类型
1.类型别名关键字typedeftypedef int myInt; //myInt为int同义词可以用myInt来声明对象myInt a = 0; //等于int a = 0在函数指针中typedef用处更大,以后细说--------------------------------------------------------------------...
2017-10-07 21:50:00
142
转载 2.4:const限定符
这是个好东西,Effective C++里都已说过:能用的地方尽量用,大师都这样说了,我们这些渣渣为何不遵循?const就是常量,这就有个重要的东西了:常量必须初始化 const int a = 0; const int b = get_size(); //已知有get_size()函数 const int c; //错误!!!----------...
2017-10-03 14:58:00
88
转载 2.3:复合类型
2.3.1引用在C++11标准中,增加了一个右值引用,稍微高级的东西,以后会更新。一般来说引用都是说的左值引用。这里就有一个问题,什么是左值,什么是右值。简单一句话:左值长久,右值短暂引用其实就是给对象起了另一个名字。如: int ival = 0; int &refVal = val; //refVal就是引用,是ival的别名因此,既然...
2017-10-01 15:56:00
98
转载 条款9:绝不在构造和析构过程中调用virtual函数
在构造函数中调用virtual函数时,base class构造期间virtual函数是不会下降到derived class层如: class Transaction{ public: Transaction(); virtual void logTransaction() const = 0; }; Tran...
2017-10-01 15:06:00
113
转载 条款8:别让异常逃离析构函数
例如:class Widget{public:~Widget(){...}};void doSomething(){vector<Widget>v;}如果v中有10个Widget,销毁第一个时发生析构函数抛出异常,销毁第二个时析构函数又抛出异常,那么两个异常同时存在的情况下:程序要么结束执行要么导致不明确行为。因此:析构函数绝对不...
2017-10-01 15:05:00
102
转载 条款7:为多态基类声明virtual析构函数
1.假设有如下时间类: class TimeKeeper { public: TimeKeeper(); ~TimeKeeper(); }; class AtomicClock :public TimeKeeper {}; factory函数(用户只是想调用时间,而不想操心时间如何计算等细节):Tim...
2017-10-01 15:01:00
106
转载 条款6:若不想使用编译器自动生成的函数,就该明确拒绝
如果自己定义的类中并不需要copy assignment操作符或者copy构造函数,为了避免编译器自动生成因为编译器自动生成的没什么用,一般是按照顺序进行赋值或者拷贝,对于有对象内含有指针的话可能会出现一些问题可以在private中声明(并不定义)它们。但是,友元和成员函数依然可以调用它们。在C++11标准中可以用如下方法:class A{public: ...
2017-10-01 14:58:00
116
转载 条款5:了解C++默默编写并调用哪些函数
当写下如下空类时:class Empty{};编译器处理后变成;class Empty{public:Empty() {}//默认构造函数Empty(const Empty&) {}//默认拷贝构造函数~Empty(){}//默认析构函数Empty& operator=(const Empty&) {}//默认赋值操作符}...
2017-10-01 14:48:00
113
转载 条款3:尽可能使用const
1.两种不同的常量:const在*左边表示被指物为常量,在右边表示指针为常量* 常量指针:不可以改变指向的位置,但可以改变被指的内容(int* const num = 5);* 指针常量(指向常量的指针):可以改变指针指向的位置,但是不可以改变被指物的内容(const int* num = 5);2.STL标准库中的迭代器 vector<int> ...
2017-10-01 14:47:00
78
转载 条款4:确定对象被使用前已被初始化
一. 永远在使用对象之前将它初始化1.对于内置类型,手动完成初始化。例如:int =0;2.除了内置类型之外的类型,由构造函数进行初始化:确保每个构造函数都将对象的每一个成员进行了初始化。二. 特别区分“赋值”和“初始化”例如:有一个类:A中有一个成员变量string name;有一个构造函数:A(const string &n){name=n;}//这...
2017-10-01 14:47:00
123
转载 条款2:尽量以const,enum,inline替换#define
1.#define不被视为语言的一部分,并且使用常量会比#define导致较小的码2.常量替换#define的两种情况定义常量指针(当指针所指物为常量时,应该有两个const),const char* const A = “zhou”;class中的常量:将常量的作用域限制在类中,因此必须为类中的一个成员,但是常量只能有一份实体,因此需要将它成为一个实体,不能用#d...
2017-10-01 14:46:00
74
转载 13.2:拷贝控制和资源管理
两种选择:类的行为像一个值:有自己的状态,拷贝一个像值的对象时,副本和原对象是完全独立的。改变副本不会改变原对象。类的行为像一个指针:类是共享状态,当拷贝这个对象时,原对象和副本对象使用相同的底层数据,改变副本也会改变原对象。1.行为像值的类 拷贝对象,而不是拷贝指针。 代码如下: class HasPtr{ public: ...
2017-10-01 14:30:00
95
转载 13.1:拷贝、赋值和析构
1.拷贝构造函数 基本形式:Name(const Name&) 对于类类型成员,会调用拷贝构造函数拷贝,对于内置类型成员就直接拷贝。对于数组,合成的拷贝构造函数会逐个拷贝都另一个数组中(内置类型)。 拷贝构造函数发生的时候:发生在用 = 定义变量时将一个对象作为实参传递给一个非引用类型的形参从一个返回类型为非饮用类型的函数返回一个对象用花...
2017-10-01 14:29:00
114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人