自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hustyangju的足迹

Stay Hungry,Stay Foolish

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

原创 GCC 4.9.0 发布,提升 C++11 和 C++14 特性

from :http://www.oschina.net/news/51084/gcc-4-9-0GCC 4.9.0 发布,此版本是个主要版本更新,包括了 GCC 4.8.x 系列和之前的 GCC 版本都没有的新特性,新特性非常之多。下载地址:http://gcc.gnu.org/mirrors.html警告移除 mudflap 运行时检查器,mudfl

2014-04-29 23:42:01 3495

原创 c++ founction object

根据SGI官方文档,仿函数也叫函数对象(Function Object, or Functor),定义就是任何可以像函数一样被调用的对象。一个普通的函数是函数对象,一个函数指针当然也是,广义上说任何定义了operator()的类对象都可以看作是函数对象。仿函数(Functor、Function Object)传递给STL算法的函数型参数(functional arguement)不一定要是

2014-04-29 15:25:19 1147

原创 STL 逆向迭代器 reverse_iterator 的逻辑位置与实际位置

对于逆向迭代器,很重要的一点是需要弄清楚逻辑位置和实际位置二者的区别。下图显示了逆向迭代器的位置和所指的数值:可以发现,逆向迭代器所指位置(实际位置)和所代表的的数值(逻辑位置或数值)是不同的。C++这么做是有其原因的。导致这个行为的原因是区间的半开性。为了能够制定容器内的所有元素,我们必须运用最后一个元素的下一个位置。但是对于reverse迭代器而言,这个位置位于第一个元素之

2014-04-29 09:59:00 1518

原创 STL 之 multimap 源码剖析

/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee,

2014-04-28 15:58:45 1041

原创 STL 之 map 源码剖析

/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee,

2014-04-28 15:54:46 1381

原创 STL 之 multiset 源码剖析

G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_multiset.h 完整列表/*** Copyright (c) 1994* Hewlett-Packard Company** Permission to use, copy, modify, distribute and sell this software* and its docum

2014-04-25 16:50:45 1015

原创 STL 之 set 源码剖析

G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_set.h 完整列表/*** Copyright (c) 1994* Hewlett-Packard Company** Permission to use, copy, modify, distribute and sell this software* and its documentat

2014-04-25 16:44:46 1824

原创 STL 之 list 源码剖析

参考侯捷的剖析,随着理解的深入会补充一些个人注解!G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_list.h 完整列表/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell

2014-04-25 15:30:20 1074

原创 STL 之 deque 源码剖析

参考侯捷的源码分析,随着理解的深入会加入自己的注解!G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_deque.h 完整列表/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sel

2014-04-25 14:48:39 1627

原创 STL 之 vector 源码剖析

这里不讨论vector的使用,毕竟参透源码,怎么用也就更清晰了。参考侯捷的源码分析,根据理解的深入会加入一些注解!G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_vector.h 完整列表/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use,

2014-04-25 11:24:26 1194

原创 C++的沉迷与爱恋 from 侯捷

最近读了不少侯捷的书,站在巨人的肩膀上力不能及,只希望追逐之旅有所受益!C++的沉迷与爱恋  作者:侯捷 1998.09.28 发表 每年的 09/28 於我都是一个特殊的日子 -- 不只是因为教师节。今年很特殊地没有普天同庆,那麽我就写篇文章自己庆祝一下好了。 我於今年七月发表了一本着作 和一本译作 ,获得很大的回响。这些作品都不是针对 C

2014-04-24 11:18:04 1549

原创 c++ struct与class的区别

从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别:  (一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;  (二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。  除了这两点,class和struct基

2014-04-23 10:36:06 8672 1

原创 STL 之 pair 源码剖析

#ifndef __SGI_STL_INTERNAL_PAIR_H#define __SGI_STL_INTERNAL_PAIR_H__STL_BEGIN_NAMESPACEtemplate struct pair {typedef T1 first_type;typedef T2 second_type;T1 first; // 注意,它是 publicT2 second; //

2014-04-23 10:20:42 1045

原创 dynamic_cast详解

1 用法介绍 参考:http://baike.baidu.com/link?url=lwqlXGEAznkWAc26v929RfiiTY67x6OwVrm-VMpx99LElkrqiTyd1FlLISPVcht3BfmoW4TqxgJi10gl0PJSe_dynamic_cast ( expression)该运算符把expression转换成type-id类型的对象。Type-i

2014-04-22 16:27:52 2105

原创 C++异常安全之std:auto_ptr

auto_ptr是C++标准库中()为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针)auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。std::auto_ptr pa(new ClassA);很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它。这

2014-04-22 11:35:56 1659

原创 C++异常处理

程序中的错误分为编译时的错误和运行时的错误。编译时的错误主要是语法错误,比如:句尾没有加分号,括号不匹配,关键字错误等,这类错误比较容易修改,因为编译系统会指出错误在第几行,什么错误。而运行时的错误则不容易修改,因为其中的错误是不可预料的,或者可以预料但无法避免的,比如内存空间不够,或者在调用函数时,出现数组越界等错误。如果对于这些错误没有采取有效的防范措施,那么往往会得不到正确的运行结果,程序不

2014-04-22 10:24:53 1207

原创 Explicit Initialization

C++ supports two forms of explicit initialization.In The C++ Standard Library page 14, it produced “explicit initialization”which is useful for templatetemplate void f( ){T x = T( );..

2014-04-22 09:42:05 1330

转载 泛型编程:源起、实现与意义

from 为什么泛型泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象,这样的事情;熟悉一些其它面向对象的语言的人应该知道,如Java里面这是通过在List里面存放Object引用来实现的。Java的单根继承在这里起到了关键

2014-04-21 15:55:04 776

原创 C++应用程序的编译过程和模板类的编译过程

一:一般的C++应用程序的编译过程。    一般说来,C++应用程序的编译过程分为三个阶段。模板也是一样的。在cpp文件中展开include文件。将每个cpp文件编译为一个对应的obj文件。连接obj文件成为一个exe文件(或者其它的库文件)。下面分别描述这几个阶段。1.include文件的展开。    include文件的展开是一个很简单的过程,只是将include文

2014-04-18 11:35:56 3176 1

原创 为什么C++编译器不能支持对模板的分离式编译

首先,C++标准中提到,一个编译单元[translation unit]是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件,后者拥有PE[Portable Executable,即windows可执行文件]文件格式,并且本身包含的就已经是二进制码,但是,不一定能够执行,因为并不保证其中一定有m

2014-04-18 11:25:47 1093

原创 C++句柄类

1 句柄类定义:一般定义:句柄类(智能指针smart point)是存储指向动态分配(堆)对象指针的类。除了能够在适当的时间自动删除指向的对象外,他们的工作机制很像C++的内置指针。智能指针在面对异常的时候格外有用,因为他们能够确保正确的销毁动态分配的对象。他们也可以用于跟踪被多用户共享的动态分配对象。在C++中一个通用的技术是定义包装(cover)类或句柄(handle)类,也称

2014-04-16 16:28:16 1302

原创 基类对象与派生类对象的使用关系

基类对象与派生类对象的使用关系1. 派生类对象作为基类对象处理由于派生类具有所有基类的成员,所以把派生类的对赋给基类对象是合理的,不过要求这种继承方式必须是public方式。但是,反过来赋值会使基类中一具有派生类的成员(因为派生类的成员通常是比基类的成员多),所以这是不允许的。2. 基类指针指向派生类对象因为派生类对象也是基类对象,所以指向派生类对象的指针可以转换为指向基类

2014-04-16 15:00:43 7622

原创 C++ boost库中的智能指针介绍

简单地说,智能指针的作用就是在对象已经不再被需要的时候,自动释放掉它,原理不外乎就是利用构造、拷贝构造、赋值、析构这几个东西来进行的,           智能指针能够使C++的开发简单化,主要是它能够像其它限制性语言(如C#、VB)自动管理内存的释放,而且能够做更多的事情。 1、 什么是智能指针智能指针是一种像指针的C++对象,但它能够在对象不使用的时候自己销

2014-04-16 10:54:40 1844

原创 C++中智能指针的原理和简单使用

参考:(1)http://blog.csdn.net/hackbuteer1/article/details/7561235(2)c++ primer P421-425智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指

2014-04-16 10:40:57 1225

原创 C/C++ 指针删除的几个细节

在C/C++中,当指针需要删除时,对于new的指针,调用delete就可以删除  比如 int* p = new int(17);  delete p;  有时候为了避免使用错误,一般在delete之后,将p置为NULL,即 int* p = new int(17);  delete p;  p = NULL;  有时候为了方便及统一处理

2014-04-16 09:42:29 3460

原创 linux字符cdev和inode的联系

Char Device Driver  相关数据结构:  struct cdev {  struct kobject kobj;  struct module *owner;  const struct file_operations *ops;  struct list_head list;  dev_t dev;  unsigned int count;  

2014-04-15 09:56:00 1484 2

原创 C++之作用域运算符::

C++使用::运算符搞定很多东西,其中最基本的一个用处就是用来决议多继承中的重名成员。::运算符的本质是:左操作数是一个scope,右操作数是这个scope内的名字,可以是 scope,class,member或者function,variable等等,从左操作数指定的scope中找到有操作数这个实体。看起来非常优雅,不是么?可是,它有好几个缺陷。一、现实的常见的缺陷。分散在代码中,一旦改变会引起

2014-04-11 10:32:18 4951 1

原创 typedef的用法总结

在计算机编程语言中用来为复杂的声明定义简单的别名,与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中。typedef声明,简称typedef,为现有类型创建一个新的名字,或称为类型别名,在结构体定义,还有一些数组等地方都大量的用到。它有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法

2014-04-08 10:33:45 777

原创 简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系

很多初学者往往对递归迷惑不解,也在这上面花了不少的时间。其实教材上的例子很经典,只是它说的有一些唠叨了。初学者会看的头大的。编程是解决问题的,而现实中很多的问题都是比较简单的,没有象汉诺塔那么复杂。我们也不必追究递归到底是怎样实现的,我们只是要会用递归,会用递归来为我们解决一些问题,这就行了。        首先来看一个例子:有一个Febonacci序列:        1,1,2,3

2014-04-01 22:11:30 4308

原创 STL中的Unique的用法

STL中Unique函数的作用是去除相邻重复元素#include #include #include using namespace stdint main(){int a[10] = {7,4,1,7,4,1,7,4,1,0};sort(a,a+10);//小到大vectorver(a,a+10);vector::iterator iter

2014-04-01 22:02:15 1386

原创 北大ACM题分类

主流算法:  1、搜索 //回溯  2、DP(动态规划)//记忆化搜索  3、贪心   4、图论 //最短路径、最小生成树、网络流  5、数论 //组合数学(排列组合)、递推关系、质因数法  6、计算几何 //凸壳、同等安置矩形的并的面积与周长、凸包计算问题  8、模拟   9、数据结构 //并查集、堆、树形结构  10、博弈论   11、简单题题目分类

2014-04-01 15:14:33 1091

原创 北大 poj acm题目推荐50题

OJ == 北京大学ACM在线评测系统 http://acm.pku.edu.cn/JudgeOnline1. 标记 难 和 稍难的题目大家可以看看,思考一下,不做要求,当然有能力的同学可以直接切掉。2. 标记为 A and B 的题目是比较相似的题目,建议大家两个一起做,可以对比总结,且二者算作一个题目。3. 列表中大约有70个题目。大家选做其中的50道,且每

2014-04-01 15:06:47 6354

qt signal-slot测试代码

signal-slot机制是QT的核心,也是QT解决线程之间通信的一大亮点。深刻理解其两大特性: (1)loosely coupled sender 与 receiver 互不关心,一个signal可以被多个slot获取,signal可以触发另一个signal (2)type-safe connect连接时,遵守严格的参数约定,slot参数必须与signal参数保持一致,slot参数数量可以少于signal qt signal-slot测试代码

2013-12-27

空空如也

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

TA关注的人

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