5 果岭里29

尚未进行身份认证

成为一个优秀的人

等级
TA的排名 1w+

Leetcode 92. Reverse Linked List II

92.ReverseLinkedListII   MySubmissionsQuestionEditorialSolutionTotalAccepted: 69858 TotalSubmissions: 251099 Difficulty: MediumReversealinkedlistfromposition m t

2016-04-22 00:39:05

C/C++ 中调用matlab 的两种方式

matlab中在数值计算方面有很大优势,如:矩阵计算求解方程等。在C/C++开发中,我们实现相同的功能往往很复杂,我们可以在C/C++开发环境下调用matlab进行混合编程。下面主要介绍环境配置相关的说明。注:我的本地测试环境是 VS2008 WIN764位 matlab2011b32位1.配置VS2008 打开VS"工具" ->

2016-04-20 14:27:51

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

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

2016-04-19 23:37:20

Leetcode 343. Integer Break

原题链接:343.IntegerBreak343.IntegerBreak   MySubmissionsQuestionEditorialSolutionTotalAccepted: 642 TotalSubmissions: 1506 Difficulty: MediumGivenaposi

2016-04-19 23:03:02

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

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

2016-04-18 22:46:41

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

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

2016-04-17 00:07:46

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

C++ 命名空间 namespace 知多少

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

2016-04-15 22:46:12

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

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

2016-04-14 22:51:10

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

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

2016-04-14 14:13:07

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

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

2016-04-13 23:57:16

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

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

2016-04-13 23:39:44

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

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

2016-04-12 22:37:51

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

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

2016-04-03 00:47:36

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

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

2016-04-03 00:18:12

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

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

2016-04-01 13:48:31

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

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

2016-03-31 23:34:39

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

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

2016-03-31 22:52:39

面向对象编程的原则

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

2016-03-31 01:56:17

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

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

2016-03-31 01:53:21

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!