- 博客(199)
- 资源 (1)
- 收藏
- 关注
原创 《STL源码剖析》深入分析序列式容器——vector
vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。吃多少用多少。(1)vector的空间配置数据结构:iterator start; //已使用空间的头iterator finish; //已使用空间的尾iterator end_of_storage; //目前可用空间的尾 (我们都知道一个vecto
2015-11-03 21:45:25 743
原创 《STL源码剖析》迭代器以及Traits设计
C++的class templates和function templates可以实现容器和算法的泛型化。难点和关键是设计这两者的胶着剂角色——迭代器——提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴漏该容器的内部数据结构和内部表述方式。迭代器是一种Samart pointer。每一种STL容器都提供有专属的迭代器!原因:为了让实现细节封装起来而不让使用者看到,所以把迭代器
2015-10-24 15:36:49 770
转载 Traits 编程技法+模板偏特化+template参数推导+内嵌型别编程技巧
STL中,traits编程技法得到了很大的应用,了解这个,才能一窥STL奥妙所在。先将自己所理解的记录如下:Traits技术可以用来获得一个 类型 的相关信息的。 首先假如有以下一个泛型的迭代器类,其中类型参数 T 为迭代器所指向的类型:template typename T>class myIterator{ ...};当我们使用myIterator时,怎
2015-10-24 15:00:10 874 1
原创 变量相加和常量相加的区别
{ /* byte b1 = 3, b2 = 4, b; b = b1 + b2; // 错误提示:Type mismatch: cannot convert from int to byte!原因:变量相加后会直接进行类型的提升 b = 3 + 4; */ flo
2015-10-21 11:33:39 955
转载 Eclipse快捷键大全
Eclipse快捷键大全:Alt+/:快速给类起名字;提示作用;main+Alt+/:public static void main(String[] args) syso+Alt+/:System.out.println("");提高开发效率:A:自动提供构造方法:a:无参构造方法 在代码区域右键---source--Generate Constructors fro
2015-10-21 10:02:17 944
转载 枚举enum
枚举在C/C++/C#中,是一个被命名的整型常数的集合。枚举的说明与结构和联合相似,其形式为:enum 枚举名{ 标识符[=整型常数], 标识符[=整型常数], ... 标识符[=整型常数]} 枚举变量;如果枚举没有初始化, 即省掉"=整型常数"时,则从第一个标识符开始, 顺次赋给标识符0,1,2,...。但是,当枚举中的某个成员赋值后,其后的成员仍按依次
2015-10-18 20:53:47 725
原创 设计模式概览续(行为型模式)
上一篇介绍了结构型模式——代理模式、装饰模式、适配器模式(adapter)、组合模式、桥接模式(bridge)、外观模式(facade)、享元模式(flyweight)。接下来介绍行为型模式——模板模式(template)、命令模式(command)、责任链模式、策略模式、中介者模式(mediator)、观察者模式(observer)、备忘录模式(mememto)、访问者模式(visitor)、状
2015-10-11 13:47:50 1185
原创 设计模式概览续(结构型模式)
上一篇介绍了几种创建型模式——单例模式、简单工厂模式,多态工厂模式、抽象工厂模式、建造者模式、原型模式(prototype),接下来介绍结构型模式——代理模式、装饰模式、适配器模式(adapter)、组合模式、桥接模式(bridge)、外观模式(facade)、享元模式(flyweight)。 上述介绍了结构型模式——代理模式、装饰模式、适配器模式(
2015-10-10 14:50:48 906
原创 设计模式概览
一、UML基础UML(United Modeling Language, 统一建模语言): 是一种基于面向对象的可视化建模语言; UML 采用一组形象化的图形(如类图)符号作为建模语言, 使用这些符号可以形象地描述系统的各个方面;UML 通过建立图形之间的各种关系(如类与类之间的关系)来描述模型;UML 中的关系主要包括 4 种:关联关系(association);依赖关系(dep
2015-10-08 17:20:00 1003
原创 C++技术点积累(9)——补充
1、三目运算符C语言中的三目运算符:#include"stdio.h"void main(){ int a = 10; int b = 15; int z = (a > b ? a : b); printf("z:%d", z); (a > b ? a : b) = 20; //error:错误 1 error C2106: “=”: 左操作数必须为左值 pr
2015-09-28 16:41:37 733
原创 C++技术点积累(5)——泛型编程(函数模板、类模板)
1、函数模板——本质:类型参数化1)使得程序(算法)可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递。总结: 模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属。 模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。.....2、类模板.....
2015-09-18 17:12:23 1190
原创 函数指针基础及应用(正向调用、动态库升级成框架)
1、数组指针2、函数指针函数指针做函数参数的思想精华——调用者任务的人 和 实现任务的人 解耦合(回调函数的本质:提前做了一个协议的约定(把函数的参数、函数返回值提前约定))(C++编译器通过多态的机制(提前布局vptr指针和虚函数表,找虚函数入口地址来实现))2)函数指针应用(1)——正向调用3)函数指针应用(2)——动态库升级成框架
2015-09-17 19:38:56 2037 1
原创 C++技术点积累(4)——继承、多态、抽象类
C++技术累积(4):1、继承:1)对于单个类来说,访问修饰符:public 修饰的成员变量 方法 在类的内部 类的外部都能使用;protected: 修饰的成员变量方法,在类的内部使用 ,在继承的子类中可用 ;其他 类的外部不能被使用;private: 修饰的成员变量方法 只能在类的内部使用 不能在类的外部;2)C++中的继承方式会影响子类的对外访问属性:publ
2015-09-16 19:47:09 1291
原创 C++技术点积累(3)——对象初始化列表、运算符重载
C++技术累积:1、构造函数的对象初始化列表——初始化列表先于构造函数的函数体执行原因:1)、必须这样做:如果我们有一个类成员(A类),它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,而没有默认构造函数,这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,就无法初始化A类的对象(成员),也就无法确定该类本身的内存空
2015-09-16 19:46:36 1693
原创 Win10开启远程桌面
1、“这台电脑”——属性——远程设置((控制面板——系统——远程设置));2、允许远程连接,并且可以设置可远程访问的用户;简单设置上述两步后,进行远程连接如果提示下面错误:原因如下:该机器的网络位置变成了公用,在win10防火墙设置;专用网络是未连接,而公用网络是有1个活动连接。win10的网络位置会影响自身防火墙的策略,公用位置是不允许远程桌面连入的,
2015-09-10 15:41:10 10184
原创 编译、安装rdesktop 1.8.3
1、安装GCC:安装C/C++编译器apt-get install gcc gcc安装相关构建工具apt-get install build-essential另外再装一下下面这两个:checking for GSSGLUE... no错误(1):CredSPP support requires libgssglue, install the dep
2015-09-08 15:39:37 11389
原创 C++技术点积累(2)——拷贝构造函数、深拷贝、浅拷贝
C++技术点积累:1、因为在A类外的B类是无法使用A类的private成的,但是有的时候又有这种需求(A类和B类有一些业务数据联系),一般我们可以A类中编写一些get()函数,getAx(){ return x;//把A类的成员变量甩出去},这样,我们在B类就可以调用A类的getAx()函数来使用A类的成员变量x。2、拷贝构造函数的四种调用情景(拷贝构造函数调用时机)3、深拷贝、浅拷贝
2015-09-07 20:55:47 1516
转载 EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP
对学习编程者的忠告:多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!眼过千遍不如手过一遍!书看千行不如手敲一行!手敲千行不如单步一行!单步源代码千行不如单步Debug版对应汇编一行!单步Debug版对应汇编千行不如单步Release版对应汇编一行!VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应
2015-09-01 16:46:35 1448
原创 编写、调用DLL的步骤
比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。其中可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的
2015-08-31 20:04:06 1258
原创 二进制文件与文本文件
1、C语言中缺省是按照文本方式打开文件。2、二进制文件和文本文件(1)文件是在计算机内存中以二进制表示的数据在外部存储介质上的另一种存放形式。(2)文件通常分为二进制文件和文本文件。(3)二进制文件是包含在 ASCII 及扩展 ASCII 字符中编写的数据或程序指令的文件。一般是可执行程序、图形、图象、声音等等文件。(4)文本文件(也称为ASCII文件):它
2015-08-28 11:30:38 1147
原创 二级指针用法示例
1、二级指针的第一种用法:指针数组2、二级指针的第二种内存模型:二维数组3、二级指针的第三种内存模型:扔开C编译器,手工打造二维内存4、总览二级指针的三种内存模型:5、三种内存模型综合演练:
2015-08-27 17:31:44 1805
原创 C语言提高之指针初步
1、指针也是一种数据类型 指针是一种数据类型,是指它指向的内存空间的数据类型; *号表示 操作 指针所指向的内存空间中的值; *p相当于通过地址(p变量的值)找到一块内存;然后操作内存;*p放在等号的左边赋值(给内存赋值);*p放在等号的右边取值(从内存获取值); 不断的给指针变量赋值,就是不断的改变指针变量(和所指向
2015-08-24 19:18:10 1058
原创 C语言提高之技术模型层次、学习标准、特点、内存四区、函数调用模型
1、C语言技术模型分层:其中,接口的封装和设计尤为重要!2、着重需要培养的能力(1)接口的封装和设计(业务模型的抽象、功能抽象和封装) ———重中之重!a.接口api的使用能力;b.接口api的查找能力(快速上手);c.接口api的实现能力;// SOCKETCLIENT_H,一个简单信息系统的封装接口#ifndef _SOCKETCLIENT
2015-08-21 15:18:13 1347
原创 WCF简介
一、概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。 WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。 WCF合并了Web服务
2015-08-19 19:04:44 829
翻译 使RemoteFX媒体流在 Windows Server 2012 和 Windows 8无缝的多媒体体验
http://blogs.msdn.com/b/rds/archive/2012/08/16/enabling-a-seamless-multimedia-experience-with-remotefx-media-streaming-in-windows-server-2012-and-windows-8.aspx以前,Windows Server 2008 R2 和 Windows
2015-08-19 16:03:00 2425
转载 C++名字查找
http://blog.csdn.net/ccjjnn19890720/article/details/6538775http://blog.csdn.net/rogeryi/article/details/1448606 \ http://blog.csdn.net/rogeryi/article/details/1449220C++名字查找有两个方法:一个是OL(or
2015-08-18 21:02:45 1199
转载 using声明和using指示、std::move和std::forward
写在前面:using指示并非一无是处,例如在命名空间本身的实现文件中就可以使用using指示。using指示一次性注入某个命名空间的所有名字,这种用法看似简单,实则充满了风险:只使用一条语句就突然将命名空间中所有成员的名字变得可见了。(
2015-08-18 20:13:08 1009
转载 显示转换static_cast、const_cast、reinterpret_cast、dynamic_cast详解
显示转换static_cast、const_cast、reinterpret_cast、dynamic_cast
2015-08-18 19:48:02 843
原创 C++11随机数发生器 VS rand()
C++程序不应该使用库函数rand,而应该使用default_random_engine类和恰当的分布类对象。当我们说随机数发生器时,是指分布对象+引擎对象的组合。1、一个给定的随机数发生器一直会产生相同的随机数序列。一个函数如果定义了局部的随机数发生器,应该将其(引擎对象+分布对象)定义为static的。否则,每次调用函数都会生成相同的序列。#include#include#incl
2015-08-18 19:11:27 11800 2
原创 C++ 11之lambda表达式
C++中,一个lambda表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。1、lambda表达式的形式: [capture list] (parameter list) -> return type { function body }其中除了“[ ]”(其中捕获列表可以为空,但必须包含,不能省略)和“复合语句”(相当于具名函数定义的函
2015-08-18 10:37:03 758
原创 《C++核心思想》学习笔记(4)
第十二章 流1、文件流变量:(#include)ifstream,ofstream,fstream;2、ifstream input_date;(文件读操作,用于把数据输入到数据流)//打开文件,从而将数据流和文件关联input_date.open (“C:\\homework\\input.txt”);★路径名反斜杠两次;★如果用户是将文件名输入到字符串常量,则无需键入两
2015-08-14 17:21:20 546
原创 《C++核心思想》学习笔记(3)
第八章 测试和调试1、将输入数据存放在一个文件中并使用输入重定向来为程序提供输入?????????P230,p233输出重定向2、批处理文件——是DOS操作系统下的特性,并不是C++的特性。3、调试器的使用!通常使用三个命令:“执行到指定行”、“执行到下一行”(将执行当前行并停在下一行)、“查看变量”。4、单步执行(single step)的两种方式:step into(单步进
2015-08-14 16:55:47 676
原创 《C++核心思想》学习笔记(2)
第六章 类1、getline(cin,next_name);getline()函数从输入中读取一行文本,包括行尾的换行字符,也随即结束读取,然后把除换行字符之外的所有字符存入next_name。它是读入到换行符r结束,并且抛弃换行符,>>运算符会忽略掉所有的空白字符(即空格、制表符、换行符)直到非空字符为止,它不会再读入后面的字符,通常是换行符。★注:在不明确输入内容的情况下,最好
2015-08-14 16:45:08 640
原创 《C++核心思想》学习笔记(1)
第一章 简介1、测试程序;2、防错编程——结构化编程技术;3、如何有效地使用调试器(debugger); 第二章 基本数据类型1、引入有意义的符号名(具有描述性);2、变量在定义声明时进行“初始化”是一个好的程序设计习惯;3、空白字符(空格、制表符、回车)用来分割数字的输入;4、“坦白讲,cin输入并不适用于与用户进行交互,它非常适合于从文件中读取数据,并且对程
2015-08-14 16:36:00 802
sqlitegen_eclipse_site_0.1.18.jar
2015-11-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人