- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 【C++ Primer】特殊工具与技术
十七、用于大型程序的工具1. 优化内存分配C++类型分配是一个类型化操作:new为特定类型分配内存,并在新分配的内存中构造对象。new表达式会为每个动态分配的类自动调用构造函数。但有些时候需要将内存分配与对象构造分开,因为对预先分配,但以后却不使用的对象进行构造很是浪费的。C++提供两种方法,分配和释放未构造的的原始内存:
2014-05-09 17:41:39
1239
原创 【C++ Primer】用于大型程序的工具
1. 异常处理异常以类似于将实参传递给函数的方式抛出和捕获。异常可以是可传给非引用实参的任意实参的类型,这意味着必须能够复制该类型的对象。当抛出一个表达式的时候,被抛出对象的静态编译时类型将决定异常对象的类型。抛出指针通常是个坏主意。栈展开:沿着嵌套函数调用链继续向上,直到为异常找到一个catch子句。栈展开期间,释放局部对象所用的内存并运行类类
2014-05-09 01:26:13
1132
原创 快速排序总结
首先提一下插入排序,在后面的优化中可以用到:最简单的插入排序:isort1:for i = [1, n) for(j = i; j> 0 && x[j - 1] > x[j] ; j--) swap(j-1, j)优化策略:不进行转化,将要插入的数存储起来,从后往前进行查找赋值,直到遇到更小的数时,将存储起来的值赋值给更小的数的后面一位。
2014-04-26 00:58:23
1293
原创 C++中static关键字总结
static存在的意义: 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此
2014-04-23 13:56:26
1068
转载 c++中数组名与函数的区别
文章转自http://tech.163.com/05/0823/11/1RR94CAS00091589.html引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地
2014-04-13 14:12:34
2219
转载 Visual Studio2010中Release版本下调试设置
设置在Release模式下调试的方法:1.工程项目上右键 -> 属性2.c++ -> 常规 -〉调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi)3.c++ -> 优化 -〉优化 选 禁止(/Od)4.连接器 -〉调试 -〉生成调试信息 选 是 (/DEBUG)另外,当Release版本中用到了Debug版本呢的类库
2014-03-11 10:03:55
1514
转载 C语言负数的移位运算
在c 中左移也就是所说的逻辑移位,右端补0,而右移是算数移位,左端补齐的是最高位的符号位。故负数左移,有可能变成正数,但负数右移,肯定还是负数。用16进制的形式对数据进行赋值,这16进制的数代表的是补码。 i = 0xfffffff7; //0xfffffff7是补码,而不是原码,故i = -9 printf("%d %x\n", i, i); i =
2014-01-10 16:57:57
2036
原创 【C++ Primer】类
十二、类1. 类的定义和声明类中的成员函数都默认为inline类型,所以即使在类定义体内的函数声明显示定义为inline类型,在进行函数定义时也能够将inline进行省略。类声明: class Screen; 有时称为”向前声明“,一般用于编写相互依赖的类;在C中定义一个struct的结构为: str
2013-12-19 22:35:59
1243
原创 【C++ Primer】泛型算法(待修改)
十一、泛型算法应包含头文件 , 一些算术算法应该包括大多数情况下,算法都需要使用(至少)两个迭代器来指出算法操作的元素范围,第二个迭代器指向最后一个元素的下一位置,比如说ivec.end();1. 只读算法accumulate(iter, iter, initail) 第三个形参是累加的初值;find_first_of(it
2013-11-26 14:22:46
1044
原创 【C++ Primer】关联容器
十、关联容器map、set、multimap、multiset1. pair类型定义在utility头文件中初始化:pair1, T2> p1pair p1(v1, v2)make_pair(v1, v2)操作:p1.first p1.second
2013-11-26 14:21:56
918
原创 【C++ Primer】顺序容器
九、顺序容器1. 初始化C c : 适用于所有容器C c(c2) : 使用于所有容器,类型必须匹配(容器类型和元素类型都必须相同)C c(b, e): b,e是迭代器C c(n, t) : n个t,只适用于顺序容器C c(n) :创建有n个值初始化元素的容器,只适用于顺序容器,若T是类,则必须提供默认构造函数,否则将出错
2013-11-26 14:20:52
1097
原创 【C++ Primer】标准IO库
八、标准IO库1. IO标准库标准库:头文件 类型iostream istream, ostream, iostring从前两者派生而来fstream ifstream, ofstream, fstream从iostream派生而来sstream
2013-11-18 19:42:34
1274
原创 【C++ Primer】函数
七、函数1. 参数传递形参的初始化与变量的初始化一样:如果形参具有非引用类型,则赋值实参的值,如果形参为引用类型,则它只是实参的别名。指针形参:const int * 类型的可用int *及const int*调用,而int *则只能用int *调用;就如同变量初始化一样引用形参:非const 引用只能调用非const引用,传递右值也不可以:
2013-11-18 19:41:12
1160
原创 【C++ Primer】语句
六、语句1. 使用预处理器进行调试大多数编译器都提供定义NDEBUG选项:CC -DNDEBUG main.C预处理器还定义了其余四种有用的常量:__FILE__ 文件名__LINE__ 当前行号__TIME__ 编译时间__DATE__ 编译日期定义了NDEBUG之后(需在文件开头定义),assert语句不再起作用。ass
2013-11-14 20:14:41
1262
原创 【C++ Primer】表达式
五、表达式1. 求模两个操作符都为负数,求模的结果为负数,或0: -21 % -8 =-5;如果只有一个操作数为负数,则结果取决于机器;符号也取决于机器: 21 % -5 = 1 or -42. 操作符移位操作符具有中等优先级:优先级比算数操作符低,但比关系操作符、赋值操作符和条件操作符优先级高。只有在必要时才使用后置操作符:i++; 前
2013-11-14 20:14:12
1037
原创 【C++ Primer】数组和指针
四、数组和指针1. 数组 : 数组的长度是固定的!在数组维数必须是大于等于1的常量表达式,只能包括整型字面值常量、枚举常量、用常量表达式初始化的整型const对象。初始化:同内置变量,函数外初始化为0,函数内无初始化。字符数组:char ca[] = "c++"; 最后会自动添加'\0',维数为4;const char ca[3]= "c
2013-11-14 20:13:35
1144
原创 【C++ Primer】标准库类型
三、标准库类型1. 头文件书写在头文件中应该只定义确实需要的东西,因此,应该使用完全限定的标准库名字,如std::cout2. stringstring的读入是遇到空白字符就会终止,所以用 cin>>a; 输入"hello world"得到的a=hello;可以使用getline(cin, line)来读取整个字符串,返回值也
2013-11-09 23:39:17
1151
原创 【C++ Primer】变量和基本类型
二、变量和基本类型1. c++数据类型与机器子长的关系表示整数、字符和布尔值的算术类型合称为整型。字符型包括:char与wchar_t,后者用于表示拓展字符集,一般用两个字节表示; 机器字长:是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。机器字长也就是运算器进行定点数运算的字长,通常也是CPU内部数据通路的宽度。
2013-11-07 17:45:34
988
原创 【C++ Primer】快速入门
一、快速入门1. gcc、g++、CC区别gcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gcc;gcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。2. cerr、clog、cout区别cerr(无缓冲标准错误)---
2013-11-06 22:18:26
1063
原创 Visual Studio12中添加已有文件夹方法
方法一:将已有文件夹拖进项目。方法二:首先将文件夹及其下所有文件复制到Solution所在的目录下,接着在Solution Explorer中选择Show All Files,这时可以看到需要添加的文件夹,选中所需的文件夹,可以复选,然后右键选择Include In Project,既存文件夹便已经被添加到当前Solution中了。
2013-07-29 16:16:29
2413
原创 win8下安卓SDK Manager一闪而过解决方案
从官网下载的adt-bundle-windows-x86_64,也安装了jdk,配好了环境,但是在运行SDK Manager的时候只是一闪而过就没有然后了。从网上搜索了下,貌似win8都有这个问题,主要问题出在运行时没有找到java.exe或者找到的位置不对,有两种解决思路。第一种:删掉 C:\Windows\system32\ 下的 java.exe、javaw.exe、javaws.e
2013-07-20 12:38:14
1318
原创 UltraISO+U盘+win8重装系统
所需: UltraISO,格式化的U盘,相应win8的光盘镜像文件:1,将win8安装文件写入U盘:用UltraISO打开win8镜像文件,选择“启动”-》“写入硬盘镜像”;在这个过程中有可能会提示需要将U盘格式化,点确定即可;对于写入方法,最好是使用“USB-ZIP+”方式。2,设置BOOST启动方式:启动电脑时进入到Boost设置页面,选择usb最先启动,这个不同的电脑
2013-07-18 20:36:56
1471
原创 Linux环境下CGAL配置
1, 首先安装Boost,下载最新的boost ,解压到某个目录首先要编译生成boost安装工具bjam进入boost目录执行:./bootstrap.sh然后执行刚生成的./bjam编译开始,大约半小时,全部编译结束。./bjam install 将当前目录下编译好的头文件拷贝到相应位置:在/usr/local/include下有头文件夹boost,在/usr
2013-07-08 22:15:09
2767
原创 Linux环境下Qt环境搭建
参考:http://wuyuans.com/2012/11/qt4-8-3-transplant/一。安装G++环境 sudo apt-get install build-essential 另外的一些相关环境。如果不安装,一些qt的组件是无法正常编译的,例如openGL sudo apt-get install libx11-dev libxau-dev libx
2013-07-08 22:06:21
1395
原创 Windows平台下CGAL配置
本文使用boost_1_54_0、CGAL-4.2,cmake-2.8.11.2-win32-x86进行配置说明。详细步骤可以参考CGAL官网对于CGAL的配置说明。地址为:http://www.cgal.org/windows_installation.html我在具体配置的时候并没有完全按照指示来,最终导致了挺多错误,但是幸好最终都解决了。参考文献有:http://blog.csd
2013-07-08 21:47:33
2215
原创 Windows平台下Qt环境配置
Qt在Windows下面可以使用两种方式进行开发,一种是使用Qt Creator,一种是使用Visual Studio进行配置,本文使用Qt4.8.5(qt-win-opensource-4.8.5-vs2010)、VS2010、Qt Creator2.7.0(qt-creator-windows-opensource-2.7.0)、VS Add-In(qt-vs-addin-1.1.11-o
2013-07-08 20:53:24
1732
原创 Visual Studio2012 配置问题
本人因项目组需要,将原有VS2010卸载后重装为VS2012,但是却发现诸多问题:1、重装是报某某文件包不能使用的错误,解决方法:从微软官方下载相应msi文件进行安装;2、编写Hello,world程序时出现某某头文件找不到的情况,原因是某些包并没有包含进来。解决方法:可以将每一个项目都添加相应确实的include以及bin文件,但是这个方法太繁琐,另一种方法就是直接更改VS2012的
2013-01-11 12:49:50
1015
原创 多个相互复制的ubuntu虚拟机的设置问题
在用vmvare做实验时,我们一般先会安装一个ubuntu版本,但是安装一个也不是特别容易,尤其是在网路比较慢的时候,于是,当我们想在一台机器上用多个ubuntu做实验时,一般会采用的方法是copy刚才安装的那一份ubuntu,然后重新打开,但是这时会出现一个问题,就是mac地址会重复,因为两个系统是一样的,于是我们需要将复制后的ubuntu的mac地址进行一下修改,下面贴出来修改方法:首
2011-12-09 19:33:15
2225
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人