自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

decode

生活从未变得轻松 是你在一点点变得强大

  • 博客(116)
  • 资源 (1)
  • 收藏
  • 关注

原创 Leetcode 92. Reverse Linked List II

92. Reverse Linked List II   My SubmissionsQuestionEditorial SolutionTotal Accepted: 69858 Total Submissions: 251099 Difficulty: MediumReverse a linked list from position m t

2016-04-22 00:39:05 840

原创 C++ 中Traits技术 (5) —— 关于STL中对迭代器封装的类型介绍

上一篇讲到traits的类型萃取,可将迭代器相关的类型获取用于变量声明和函数返回等操作。对于原生指针和const指针可以采用偏特化技术进行处理。在STL中,对迭代器除了封装类型信息以外,还有一些其他的信息,这篇文章介绍一下。STL中,迭代器中的类型包括以下五种:template struct iterator_traits {typedef typename _Iterat

2016-04-19 23:37:20 1045

原创 Leetcode 343. Integer Break

原题链接:343. Integer Break343. Integer Break   My SubmissionsQuestionEditorial SolutionTotal Accepted: 642 Total Submissions: 1506 Difficulty: MediumGiven a posi

2016-04-19 23:03:02 1780

原创 C++ 中Traits技术 (4) —— 类型推导

继续理解traits技术。当我们处理原生指针时,会遇到需要知道其所指对象类型这样的问题。如何实现呢?template void testTypeForward(T t){ // write code here}C++中我们不允许使用typedef(*T)这样的语句。其中的一种解决方案是:将这个功能实现传递给另一个函数去完成。template void typeFo

2016-04-18 22:46:41 737

原创 C++ STL之 vector的capacity和size属性区别

vector中这两个属性很容易弄混淆。size是当前vector内变量真实占用的大小。capacity是预留的空间大小。

2016-04-17 00:07:46 39244 4

原创 C++ 中Traits技术 (3) —— 关于特化和偏特化

以下面这个例子为例进行说明:templateclass Test{public: static bool TestFun(const T& t);};特化,其实就是为模板参数指定特定类型,分为三种情况:  ① 特化为具体类型       T可以是int string double等类型。如特化为int:template<>class Test{

2016-04-16 20:27:23 1524

原创 C++ 命名空间 namespace 知多少

A. 命名空间是什么     命名空间是一个作用域,为了防止命名冲突。不同命名空间内可以有相同名字的成员。在所有命名空间之外,有一个全局命名空间,以隐式方式声明,这个命名空间并没有名字。B. 命名空间的定义     // 如果名为NAME的命名空间不存在 下面的代码则创建一个新的名为NAME的命名空间     // 否则 打开现有的名为NAME的命名空间,向其中添加新的

2016-04-15 22:46:12 3128

原创 你说你会C++? —— 智能指针

智能指针的设计初衷是:     C++中没有提供自动回收内存的机制,每次new对象之后都需要手动delete。稍不注意就memory leak。智能指针可以解决上面遇到的问题。C++中常见的智能指针包括(共七种):     std::auto_ptr     boost::scoped_ptr     boost::shared_ptr     boost:

2016-04-14 22:51:10 1927

转载 原生指针 泛型指针 智能指针 都是什么?

R.TA. 原生指针      就是最普通的指针,定义类似: 类型 *变量名;     与之对比的是使用上有类似指针的功能 实际并不是指针。比如:迭代器     [一个类重载 *和->操作符 那么可以像指针一样使用  但是这种并不是原生的]B. 泛型指针     第一种就是 void *指针 可以指向任意的数据结构 因此可以称为"泛型"。     第二种就是指具有指

2016-04-14 14:13:07 4217

原创 C++ 中Traits技术 (2) —— 与迭代器

接着了解C++中的Traits技术。Traits技术可以获取一个类型的相关信息。比如针对一个泛型迭代器,类型参数T表示迭代器所指向的类型。template class CMyIterator{//...};我们使用这个迭代器时,如何才能知道这个迭代器所指向元素的类型呢?比如我们可以为这个类加入一个内嵌类型template class CMyIter

2016-04-13 23:57:16 475

原创 C++ 中Traits技术 (1) —— 初识

在C++泛型编程中接触到的这个概念。尽管C++的模板技术为泛型编程提供了支持,可以编写更加通用的代码。但是模板参数类型的不同,往往会带来一些问题。比如:C++中标准库类 string和wstring的实现。(模板实现时 参数中需要一个求字符串长度的函数,由于类型不一致,函数调用API不一致,导致了问题)typedef basic_string, allocator >

2016-04-13 23:39:44 761

原创 关于C++中 虚函数 多态 和 访问限定符的思考

2016-04-12 1、C++中的静态编译和动态编译分别基于什么机制实现?首先,静态编译和动态编译都属于C++中的多态,即“一种接口,多种实现”。静态编译(/联编) —— 也称为 静态多态    如:函数的重载和运算符的重载动态编译(/联编 ) ——也称为运行时多态  如:虚函数多态规则:     通过基类指针或引用调用成员函数时          如果函数是

2016-04-12 22:37:51 552

转载 C++ 11的新特性(初识)

1. C++ 11的特性C++ 0x  扩展了 STL  并入了大部分 C++ TR1程序库A. lamda表达式语法如下:[函数对象参数](操作符重载函数参数)->返回值类型{函数体}e.g:vector iv{5, 4, 3, 2, 1};  int a = 2, b = 1;   for_each(iv.begin(), iv.end(), [b](i

2016-04-03 00:47:36 464

原创 C++ 自己实现数据结构之 string类

需要自己实现C++中的string类。本文给出的实现包括string类的一些基本操作。如:构造 拷贝构造 赋值 判断相等 字符串长度 []操作 字符串拼接 代码如下:#include #include #include using namespace std;class String{public: // 构造 String(); String(

2016-04-03 00:18:12 1659

原创 设计模式之 原型(Prototype)模式(使用智能指针避免浅拷贝时内存泄露)

上一篇文章指出了原型模式中浅拷贝时出现的一些问题,如内存泄露等问题。下面给出几种可能的解决方案来避免内存泄露。1. 我们让工作简历类继承克隆接口 实现深度拷贝。但这时候会出现内存泄露的问题。(拷贝对象内的工作简历指针无法析构)代码如下:#include #include #include using namespace std;templatecl

2016-04-01 13:48:31 1327

原创 设计模式之 原型模式(prototype)(C++实现 深拷贝 + 浅拷贝版本[bug])

本文介绍设计模式中的原型模式。本质上其实就是克隆。下面以个人简历很工作经历为例。深拷贝版本:#include #include #include using namespace std;templateclass ICloneable{public: virtual T* clone() = 0;};class CWorkExper

2016-03-31 23:34:39 2078

原创 设计模式之 创建者(Builder)模式(C++实现)

这篇文章介绍设计模式中 "创建型模式"的第三种 —— 创建者(Builder)模式。创建者模式将复杂对象的构造和表示相分离,同样的构建过程可以创建不同的表示。其强调创建产品的过程是有步骤的,有时候甚至可以强制指定构建次序。其中产品的不同表现形式是通过扩展 构造器 实现的。下面以汽车产品为例进行说明,比如汽车包括:汽车厂商 汽车引擎 汽车底盘 汽车轮胎。一

2016-03-31 22:52:39 536

原创 面向对象编程的原则

面向对象的原则 —— 高内聚 低耦合(最终目的)单一职责原则(SRP Single Responsibility Principle)类的职责单一 对外只提供一种功能开放封闭原则(OCP Open Close Principle)类的改动是通过增加代码进行的 而不是修改源代码依赖倒置原则(DIP Dependence Inversion Principle)依赖抽象

2016-03-31 01:56:17 638

原创 设计模式之 抽象工厂模式的扩展(C++实现)

上一篇主要介绍了抽象工厂模式。考虑下面一种应用场景:我们需要增加一个产品族,如何实现。当然可以考虑修改抽象工厂 增加相应的方法。但这违反了面向对象编程的原则——开放闭合原则。因此我们需要尽量去扩展 而不是修改。【对扩展开发 对修改闭合】下面给出汽车厂中增加卡车产品族的例子代码如下:#include #include #include

2016-03-31 01:53:21 528

原创 设计模式之 抽象工厂模式(C++实现)

这篇文章介绍设计模式中的 抽象工厂模式。目前为止介绍过 简单工厂模式 工厂方法模式。本文要介绍的抽象工厂模式可以看做是 多个工厂方法模式的组合。以汽车厂生产汽车为例进行说明。代码如下:#include #include #include using namespace std;class CCarBase{public: virtual

2016-03-30 23:05:16 386

原创 设计模式之 工厂方法模式(C++实现)

这篇文章介绍设计模式中的 工厂方法模式。前面两篇文章介绍了简单工厂模式的介绍和实现。本文同样以汽车厂生产汽车为例介绍工厂方法模式。代码如下:#include #include #include using namespace std;// Abstract Productclass CarBase{public: // 虚函数 实现多态

2016-03-30 23:03:17 363

原创 设计模式之 简单工厂模式(C++ 模板实现)

这篇文章在上一篇介绍简单工厂模式的实现基础之上,采用C++模板技术来克服上一篇中提到的缺点。同样以汽车厂生产汽车为例进行说明。代码如下:#include #include using namespace std;class CCarBase{public: virtual void printName() { cout << "汽车厂商:" <<

2016-03-30 23:01:33 1287

原创 设计模式之 简单工厂模式(C++实现)

这篇文章主要介绍 简单工厂模式 。下面是关于汽车厂生产汽车的一个典型案例。代码如下:#include #include #include using namespace std;// Abstract Productclass CarBase{public: // 虚函数 实现多态 virtual ~CarBase(){} virtual v

2016-03-30 22:59:13 355

原创 设计模式之单例模式 (模板 智能指针 删除器) 实现【饿汉】

上一篇实现的是使用模板 智能指针 删除器的懒汉模式单例。这一篇实现饿汉模式的版本。#include #include #include #include using namespace std;template class CEagerSingletonPtr{private: static T m_sg;private: CEagerSingleton

2016-03-29 16:39:48 656

原创 设计模式之单例模式 (模板 智能指针 删除器) 实现【懒汉】

上一篇关于单例模式的实现 主要是基于DCL。但是多线程环境下并不能保证完全线程安全。这篇文章实现的单例:懒汉模式 的单例基于模板和继承线程安全使用智能指针 防止内存泄露效率相对较高实现代码如下:#include #include #include #include using namespace std;template class

2016-03-29 15:05:27 1445

原创 Leetcode 57 Insert Interval

57. Insert IntervalMy SubmissionsQuestionEditorial SolutionTotal Accepted: 55165 Total Submissions: 234338 Difficulty: HardGiven a set of non-overlapping intervals, insert a

2016-03-28 20:43:36 458

原创 Leetcode 56 Merge Intervals

56. Merge IntervalsMy SubmissionsQuestionEditorial SolutionTotal Accepted: 63180 Total Submissions: 252043 Difficulty: HardGiven a collection of intervals, merge all overlapp

2016-03-28 18:50:10 418

原创 编程之美 2.19 区间重合判断

题目大意:给定源区间[x, y] (x

2016-03-28 16:31:26 524

原创 设计模式之 概览(设计模式是什么 设计模式分类)

一、设计模式是什么"设计模式描述了对象如何进行通信才能不牵涉相互的数据模型和方法。"通俗讲就是:解决类与类、对象与对象之间耦合性问题。二、设计模式的分类《Design Patterns: Elements of Resualbel Software》一书中将23种设计模式分为以下三类:1. 创建型模式(Creational)与对象创建有关 涉及对象实例化的方式 【共

2016-03-28 00:56:30 472

原创 win10 下使用VS2012 出现中文????的解决方案(仅限安装了visual assist插件)

--------------写点别的----------------恩,visual assist插件确实好用,但是前段时间它一直提示KEY KEY KEY网上找了好久的解决方案,然后重新安装好了~【目前来说很wonderful的解决方案如下:① 如果出现插件启动后提示需要KEY的 基本上你就要卸载 然后重新装了。但是。。。卸载不干净!!!然后重新装一个版本 还是没有用。所

2016-03-27 16:29:27 2543

原创 设计模式 之 单例模式 (C++ 懒汉经典实现 & DCL实现 & 饿汉经典实现)

顾名思义:单例模式,指的是仅有一个(类)实例。即:在应用程序的整个生命周期中,任何时刻,某个类(单例类)仅存在唯一一个实例。同时仅提供一个全局访问点。单例的实现一般要求满足:(1) 类构造函数私有(2) 提供一个全局访问点 一般是静态的共有方法一、单例的经典实现代码如下:class Singleton{public: // 全局访问点

2016-03-27 02:52:26 4054 2

原创 腾讯2016春招模拟笔试题 —— 编程题(3道)

写在前面的话~      春招 + 模拟笔试  【C++研发】      模拟笔试时间是    2016-03-25   21:30 ~ 22:30         试题主要包括两部分:不定项选择 + 编程  分别及时 时间都是30分钟。(坑~。。         前面的不定项选择15道 大部分都是往年的题 所以我基本上15分钟就提交了。。。(然并卵~。。         编程

2016-03-26 20:57:36 6669

原创 Leetcode 338 Counting Bits

338. Counting BitsMy SubmissionsQuestionTotal Accepted: 6881 Total Submissions: 12500 Difficulty: MediumGiven a non negative integer number num. For every numbers i in the rang

2016-03-25 23:59:09 631

原创 HTTP 请求的各种方法及安全性

一道题:下列哪些http方法对于服务端和用户端一定是安全的?()GETHEADTRACEOPTIONSPOST答案:C这道题注意 服务端和客户端都要安全。GET / HEAD / OPTIONS方法               只从服务端获取资源 并不对服务器进行修改 因此相对安全。               对于客户端

2016-03-25 20:13:09 4341

原创 【运算符优先级问题(持续更新...)】

一道题:计算 2^1 0261答案:  C---------------运算符优先级------------------从高到低依次是:取反   左移   按位与 按位异或  按位或

2016-03-25 18:49:24 382

转载 作业 进程 和 线程【转】

参考:作业、进程、线程 —— 真实的归宿

2016-03-25 01:13:22 335

原创 Leetcode 67 —— Add Binary

Total Accepted: 78879 Total Submissions: 291470 Difficulty: EasyGiven two binary strings, return their sum (also a binary string).For example,a = "11"b = "1"Return "100".Subs

2016-03-24 21:44:21 365

原创 Leetcode 29 —— Divide Two Integers

29. Divide Two IntegersMy SubmissionsQuestionTotal Accepted: 62780 Total Submissions: 403300 Difficulty: MediumDivide two integers without using multiplication, division and mo

2016-03-24 21:12:54 533

转载 【编程之美】1.11 NIM(1) —— 排石头的游戏

题目大意如下:N块石头排列成一行,每块石头对应一个编号。两个玩家依次取石头,每次取只能取任意一块或者相邻的两块。石头在游戏过程中不能移位,最后将剩下的石头一次取光的玩家获胜。问:该游戏是否存在必胜策略。拓展问题:1. 若最后取光石头的人输,又该如何应对?2. 两人轮流取,每次最少取一块,最多取K块,最后取走石头的人赢得游戏。如何应对?--

2016-03-24 15:15:15 752

原创 Leetcode 50 Pow(x, n) 两种方式求解

50. Pow(x, n)My SubmissionsQuestionTotal Accepted: 85668 Total Submissions: 307134 Difficulty: MediumImplement pow(x, n).Subscribe to see which companies asked th

2016-03-24 10:49:48 2194

C++智能指针测试代码

C++ 7种智能指针测试代码

2016-04-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除