6 sequenceGO

尚未进行身份认证

dev

等级
TA的排名 2w+

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

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

matlab中在数值计算方面有很大优势,如:矩阵计算 求解方程等。在C/C++开发中,我们实现相同的功能往往很复杂,我们可以在C/C++开发环境下调用matlab进行混合编程。下面主要介绍环境配置相关的说明。注:我的本地测试环境是 VS2008 WIN7 64位 matlab 2011b 32位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. Integer Break343. Integer Break   My SubmissionsQuestionEditorial SolutionTotal Accepted: 642 Total Submissions: 1506 Difficulty: MediumGiven a posi

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。稍不注意就memory leak。智能指针可以解决上面遇到的问题。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不一致,导致了问题)typedef basic_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: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

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

需要自己实现C++中的string类。本文给出的实现包括string类的一些基本操作。如:构造 拷贝构造 赋值 判断相等 字符串长度 []操作 字符串拼接 代码如下:#include #include #include using namespace std;class String{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博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!