自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

绝知此事要躬行

喜欢遇到新的算法题,然后攻克的感觉很棒

  • 博客(101)
  • 资源 (2)
  • 收藏
  • 关注

原创 C++的拖延战术:lazy evaluation

在C++中这里的拖延战术拥有一个非常优雅的名字 -- Lazy evalution。一旦你的程序中使用了lazy evaluation,那么你就可以在你实际需要某些动作时编写相应的代码,如果不需要,那么相应的动作也就永远都不会执行。那么我们在什么时候会用的上这样的技术呢?Reference Counting 引用计数对于引用技术,相信大部分人都不觉得陌生,在C++中的智能指

2014-12-10 09:12:20 4003

原创 Python 之 @property

在阅读廖雪峰的Python的笔记时,读到了@property特性,发现略有不足,由于自己是初学,希望惠及更多的初学者吧。@property 的用途是什么呢?下面一步一步地介绍。定义类Student,拥有变量名name和score1234class Student(object): def __init__(self,name,score):

2014-12-08 21:53:07 3041

原创 Python之OO 面向对象

Python之面向对象在C++和Python中,都有面向对象的概念,但是两者有哪些重要的区别呢?用最简单的语言便是,C++把每一个用户(这里当然值的是使用代码的程序员)当做是潜在的可能的犯罪分子,可以提供给你的部分已经规定好了,不可逾越。Python则是个比较柔和的管理方式,它认为所有的用户都具有高度的自觉性,用户可以很自自觉的使用代码。更加生动的比喻见这里类与对象

2014-12-07 22:08:29 2539

原创 Python 之 decorator装饰器

最近看到 廖雪峰 的Python教程,对于学习Python的人来说,这可谓是一大福音,没有冗长的废话,只有最通俗易懂的语言,以及最清晰的解读。下面是我对 装饰器 这一小节的总结, 以及自己的理解。很多时候我会把Python的很多语法与C++相融合,在C++中,函数的名称即为函数的地址,我们可以通过定义"函数指针"变量,并且讲函数名称赋值给该变量,那么我们在调用函数的时候,就可以直接使用

2014-12-07 11:55:29 2306

原创 【提高C++性能的编程技术】读书笔记2 -- 跟踪实例

这里所说的跟踪指的是跟踪程序的运行过程。这里讨论跟踪,旨在如何利用高效的跟踪的代码,使得跟踪尽可能不增加源程序的额外开销。这里的跟踪其实很直观,就是顺着程序运行的轨迹,怎样打印出程序的每一个阶段的运行状态的log信息。因此,如何跟踪代码便是一个核心的问题。不当的跟踪方式会导致运行开销的增大。因此怎样设计出高效的跟踪技术是我们学习怎样写出高效的C++代码的一个很好的突破口。鉴于C++

2014-11-30 15:43:33 1497

原创 C++ 之 exception

本文讲关于C++的异常的所有东西:绝对不让异常逃离析构函数阻止exception逃离析构函数,主要是两个原因:1 防止在异常处理过程中的栈展开行为时,将调用terminate函数。程序将会结束,有时候其实错误并没有那么严重。[插入: 什么时候会调用terminate函数呢?][回答 : By default, the terminate handler call

2014-10-10 21:51:36 1796

原创 绝不重新定义继承而来的函数的缺省参数值

首先,此处的函数指的是 virtual 函数,为什么不是non-virtual函数呢?是因为在public继承中,non-virtual函数表示派生类是需要继承其接口与其强制实现的。如果你的Derived已经在考虑重写non-virtual函数了,那么你是应该好好审视一下,在此处使用 public继承是否合理了。因此,本文只讲解virtual函数的缺省参数值,例如下面的代码:{CSDN

2014-06-24 20:11:50 1689

原创 C++ 标准库值操作迭代器的常见函数

迭代器是C++标准库中的重要组件,特别是在容器内部,没有迭代器,容器也就无所谓存在了。例如:vector容器简而言之就是3个迭代器 start finish 以及end_of_storage vector的任何操作都离不开这3个迭代器。。接下来,总结一下C++ 中的迭代器的操作。C++的迭代器分为5类,依次为 : Input_iterator, output_iterator,

2014-06-20 21:35:36 3861 1

原创 那些你不知道的默认构造函数~~

首先,本篇文章只讲 “默认构造函数”,即如你所知,默认构造函数是不带参数的构造函数。编译器会在 适当的时候 为class合成一个默认构造函数 ~~先问以下两个问题:编译器会为任何没有声明构造函数的class,合成默认构造函数?? 错!!!合成的默认构造函数会显示设定class内的每一个data member的默认值?? 错!!!class Base{public:

2014-05-13 21:25:26 1402

原创 标准库 之 nth_element

STL库中实现了nth_element函数,实现的功能是 “返回n个元素中的第k小的元素”。首先,头脑风暴一下“返回n个元素中的第k小的元素”的算法:1    排序 ,首选快排  O(n*logn),取出第k个即可。2其次,是维护一个大小为k的数组,找出数组中的最大值kmax,然后依次遍历剩下的 n-k 个元素,如果小雨kmax,则替换掉kmax元素,然后再

2014-05-10 17:07:41 5728

原创 friend 关键字 对于模板 并不仅仅只是友元!!!

friend是C++中封装的漏网之鱼!!!!但是对于有些情形,没它不行!!!

2014-05-06 08:53:34 1867

原创 C++标准库之 Lower_Bound, upper_Bound

upper_bound lower_bound

2014-05-03 12:23:24 4933

原创 C++ 模板的编译 以及 类模板内部的实例化

在C++中,编译器在看到模板的定义的时候,并不立即产生代码,只有在看到用到模板时,比如调用了模板函数 或者 定义了类模板的对象的时候,编译器才产生特定类型的代码。一般而言,在调用函数的时候,只需要知道函数的声明即可;在定义类的对象时,只需要知道类的定义,不需要成员函数的定义。但是,这对于模板编译是不奏效的,模板要进行实例化,则必须能够访问定义模板的源代码,当调用函数

2014-05-02 12:22:52 5028

原创 万能的函数 之 接口继承 实现继承~~~

在public继承中,(public 继承表示的关系是 “is  a ” 的关系),其类中定义的函数主要有三类:pure virtual函数,impure virtual函数以及non-virtual函数,这三种函数决定了public继承中的两个重要概念 : “ 函数接口继承” 以及 “函数实现继承”。那么接下来将针对这样一个不简单的问题做一些简介。考虑如下的类定义:class Shape

2014-04-27 15:01:37 1441

原创 透彻了解 inline的里里外外 绝不是那么简单

inline 绝对需要敬而远之的关键字

2014-04-24 08:37:27 1876

原创 C++ 转型动作 尽量避免 以及 那些意想不到的威胁

看完EffectiveC++的关于转型的章节,顿时觉得周围的代码都处在悬崖边上~~C的旧式转型:inta = 10; double b = (double)a;对于C++的四种转型函数,const_cast去掉对象的常量性(只此一个操作符有此功能!)dynamic_cast一般用于继承体系中某对象的归属,耗费较大reinterpret_cast低

2014-04-22 09:34:43 2106

原创 swap vs templates 模板类中定义自己的swap函数

template 模板类 与 swap函数

2014-04-19 16:17:36 4255 4

原创 swap函数 一点儿都不简单

swap函数绝不简单~

2014-04-19 16:11:27 5183 1

原创 类的构造函数 拷贝构造函数 赋值操作符 析构函数

类的那些函数~~~

2014-03-16 09:24:38 2891 2

原创 分治 Divide and Conquer 局部最小值 local optimal 棋盘问题

问题描述:Suppose now that you're given an  n × n grid graph $G$. (An n × n graph is just the adjacency graph of an $n \times n$ chessboard. To be completely precise, it is a graph whose node set is the

2013-11-05 21:15:13 8689 10

原创 项目中的有趣题目 -- 吃饺子问题

题目描述:近日,项目中偶遇一个有趣的题目,感慨多多,备忘之。抽象出来,大致是:桌上一共有100个饺子,其中有10个饺子包了硬币,问:连续吃到硬币的期望次数是多少次?首先,定义一下这里的连续,如果我们将吃饺子的顺序抽象为一个100位的二进制数。并且吃到饺子表示为1,没吃到则为0,那么:如果一次和第二次吃到,那么可表示为: 110.....,那么这里的连续吃到的次数为1.如果数

2014-12-27 11:32:20 3459

原创 C++ 之 over-eager evaluation 超前评估

C++之超急评估over-eager evaluation vs. eager evaluation vs. lazy evaluation在前面已经提到了C++地懒惰求值:不要为你程序功能之外的任何事情付出任何代价。在你总是需要执行某种计算,但是该计算地结果并不总是被用到地时候,lazy evaluation 绝对可以提高你的程序的性能。但是当计算的结果总是被需要的时候,

2014-12-07 16:46:53 1752

原创 【提高C++性能的编程技术】读书笔记1 -- 导言

【纸上得来终觉浅】最近开始看这本书,站在巨人的肩膀上,希望有更大的收获!!一个程序的执行效率是取决于改程序翻译成汇编语言之后的执行的机器指令的条数。而每一个机器指令的执行的周期是一定的。C语言和C++都是高于汇编语言的高级语言,其中,C语言源代码与其相应的机器指不是完全同一的,但是大致是线性的,但是C++语言的源代码与编译代码的开销变化很大的。一条C++指令可能对应于3条汇

2014-11-25 21:25:40 1183

原创 Validate binary search tree

关于这道题目,不得不感慨leetcode真的是一个不错的网站,之前的代码是有bug的,当时AC了,现在测试用例更加完善了,于是不能AC了。题目描述:Given a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:The le

2014-11-16 22:31:58 1366

原创 算法之找出数组中出现次数大于n/m的元素

最经典的题目莫过于是: 在一个数组中找出出现次数超

2014-10-20 21:02:43 4088 1

原创 最长回文子串的不同解法

给定一个字符串,返回该字符串的最长回文子串,回文yejius

2014-10-01 18:50:00 1212

原创 关于移位的有意思的小问题

首先,直接上题目:根据X得到F和G,其中X、F、G均是有符号的32位整型数,其中F = X/2; G = X>>1; 发现 F != G,下面的说法哪个是正确的:A  编译错误   B  X是奇数  C X是负数  D F-G=1上述4个选项中,首先排除A和B,显然随便举个反例就有了。对于C,这里就涉及到负数在计算机中的表示形式了,至于怎么个表示法,下面一一道来:对于负数,在计

2014-09-25 21:20:36 1174

原创 C++函数调用之静态成员函数

首先,定义如下类A:class A{private: static int val_s;public: static int getVal(){cout << "call getVal in A..." << endl;return val_s;}};我们可以看到,上述类的定义中包含静态成员变量val_s 和静态成员函数getVal() ,对于静态的成员变量,一般

2014-09-06 11:27:13 8970

原创 C++之类的成员函数的调用 vs. 普通函数的调用

首先请看下面的语句:Point3d obj;Point3d *ptr = &obj;当使用上述指针或者对象调用成员函数Func()时,会有:obj.Func();ptr->Func();上述调用的背后到底完成了一些什么呢?假设Func函数的定义如下:Point3d Point3d::Func() const{Float a = getA();

2014-09-05 21:21:15 4764 3

原创 [数据结构]栈的插入,归并以及快速排序

栈的快速排序。

2014-09-01 21:47:05 1891

原创 [算法]区间重合判断

题目描述:给定一个源区间 [x,y]和N个无序的目标区间[x1,y1],[x2,y2],...[xn,y,],判断给定的源区间[x,y]在不在目标区间内。例如:给定源区间[1 6]和目标区间[1 2][2 4][4 9]即可认为区间[1 6]在目标区间内,因为源区间的并集为[1 9 ].试想一下,现在在这样的一个目标区间的集合, 需要频繁地去查询一个区间是否在该集合中。那么怎么样才

2014-09-01 21:12:06 6557

翻译 C++11之 unique_ptr

原文地址为:http://www.drdobbs.com/cpp/c11-uniqueptr/240002708在C++11中加入了很多的新特性,unique_ptr一枝独秀,对于动态分配的内存对象,它简单有效。虽然它不是万能的,但是它做的已经够好了:利用简单的语法便可以管理动态分配的对象。基本语法:unique_ptr 是一个模板类,你可以很简单地构造一个unique_ptr

2014-08-24 15:58:27 3860

原创 没有默认构造函数,如何定义对象数组

如果一个类没有定义默认构造函数,那么构造该类的对象数组将会是一个问题。于是实现了一个将new操作符掰开了来用的代码。首先分配内存,然后再在分配的内存上调用构造函数构造对象,下面的代码做一个简单的备忘。//没有定义构造函数的类不能定义该类的对象数组,内置类型除外//operator new + ctor//dtor + operator delete //operator new[]

2014-08-24 10:35:29 4606

原创 算法之 有序链表和平衡二叉树 有序数组与平衡二叉树

题目描述:Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.给定一个有序的链表,要求构建一颗平衡二叉查找树。解析:二叉查找树的中序遍历的结构就是一颗二叉查找树,要使得最终的二叉查找树的结构尽可能的平衡,也就是说只需要

2014-08-23 21:57:49 2311

原创 C++之 虚函数的访问控制 以及 编译器的绑定策略

这里文章的题目是自拟的,是因为自己最近看了一篇文章,

2014-08-15 17:59:19 1318

原创 算法之 数组的“距离”

Description:给定数组A[0---n-1],找出数组中欧你

2014-08-15 17:58:24 2938

原创 快速排序 归并排序的非递归版本 备忘

首先,归并排序,分治,递归解决小的范围,再合并两个有序的小范围数组,便得到整个有序的数组。这是很适合用递归来写的,至于非递归,便是从小到大,各个击破,从而使得整个数组有序。代码如下:void merge(vector &A, int left, int mid, int right){ int i=left,j=mid+1; vector tmp(right-left+1,0);

2014-08-10 10:33:56 1339

原创 STL 之 iterator traits 备忘

//5种迭代器,为了激活重载机制,定义的5个类型。每种迭代器就是一个类型。struct input_iterator_tag{};struct output_iterator_tag{};struct forward_iterator_tag : public input_iterator_tag{};struct bidirectional_iterator_tag:public fo

2014-08-09 10:11:38 2098

原创 算法之--数组分割

题目来源:编程之美2.18有一个无序的,元素个数为2n的正整数的数组,要求:如何能把这个数组分割为元素个数为n的两个数组,使得两个子数组的和尽量接近。解析:因为两个子数组的和是一定的,等于整个数组的和。现在要求使得两个字数组的和尽量的接近,也就意味着要从其中选出n个数使得这n个数的和尽可能的接近sum/2,不妨设为从小于sum/2的方向接近。于是,这就是一个01背包的问题:

2014-08-07 14:49:45 2824

原创 最小生成树之Prim算法

Prim算法的思想是,首先从任意一个节点出发,逐渐生成,直至该树覆盖了所有的V中的节点。如下图:图中的黑色的边即是最小生成树中的边。实现Prim算法的关键便是,如何选择一条 “权值较小并且对于已有生成树中的点集合S来说是安全的边”,此处的安全指的是:加入该边e之后,S仍然是一个树。于是:对于图 G = (V, E) Prim的执行步骤大致为:1   从任意节点r

2014-07-28 10:59:25 1513

c语言进阶 中断与驱动讲解

C语言进阶方面的,第六讲中断和驱动的讲解

2010-10-19

空空如也

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

TA关注的人

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