C++
fanwenyuan_fwy
这个作者很懒,什么都没留下…
展开
-
++iter的效率比iter++的效率高
++iter的效率比iter++的效率高for(iterator it = begin(); it != end(); ++it)for(iterator it = begin(); it != end(); it++)两种方式iterator遍历的次数是相同的,但在STL中效率不同,前++--返回引用,后++--返回一个临时对象,因为iterator是类模板,使用it转载 2014-06-25 09:55:11 · 836 阅读 · 0 评论 -
详解C结构体、C++结构体 和 C++类的区别
先来说说C和C++中结构体的不同a) C语言中的结构体不能为空,否则会报错1>d:\myproject\visual studio 2013\projects\myc++\main.c(71): error C2016: C 要求一个结构或联合至少有一个成员b) C语言中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的。换句话说就是C语言中的结转载 2017-11-24 16:59:41 · 243 阅读 · 0 评论 -
do...while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。通常,如果在转载 2017-12-19 19:28:15 · 170 阅读 · 0 评论 -
结构体struct 联合体union 及内存对齐
原文链接:http://blog.csdn.net/coolingcoding/article/details/7278555当在C中定义了一个结构类型时,它的大小是否等于各字段(field)大小之和?编译器将如何在内存中放置这些字段?ANSI C对结构体的内存布局有什么要求?而我们的程序又能否依赖这种布局?这些问题或许对不少朋友来说还有点模糊,那么本文就试着探究它们背后的秘密转载 2017-11-16 16:39:19 · 668 阅读 · 0 评论 -
导出函数__declspec(dllexport)
一般而言,动态链接库中定义有两种函数:导出函数(export function)和内部函数(internal function)。 导出函数可以被其它模块调用,内部函数在定义它们的DLL程序内部使用。在要输出的函数、类、数据的声明前加上__declspec(dllexport)的修饰符,表示输出。有导出就有导入__declspec(dllimport),声明某个类、函数是从dl转载 2017-11-21 18:26:20 · 651 阅读 · 0 评论 -
VS中添加预处理宏的方法
VS中添加预处理宏的方法除了在.c及.h中添加宏定义之外,还可以采用如下方法添加宏定义:1、若只需要定义一个宏(如#define DEBUG),可以右键点击工程-->属性-->c/c++-->预处理器-->预处理器定义,点击下拉框中的编辑,输入想要定义的宏;2、如果还需要定义宏的内容(如#define inline __inline),可以右键点击工程-->属性-->c/c转载 2017-11-21 17:27:22 · 1388 阅读 · 0 评论 -
c++ 内联函数 (讲解的TM真好)
1. 内联函数在C++中我们通常定义以下函数来求两个整数的最大值:复制代码 代码如下:int max(int a, int b){ return a > b ? a : b;}为这么一个小的操作定义一个函数的好处有:① 阅读和理解函数 max 的调用,要比读一条等价的条件表达式并解释它的含义要容易得多② 如果需要做任何修改,修改转载 2017-11-14 14:19:52 · 238 阅读 · 0 评论 -
值得推荐的C/C++框架和库 (真的很强大)
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/转载 2017-09-23 21:39:31 · 805 阅读 · 0 评论 -
C++头文件为什么要加#ifndef #define #endif
#ifndef 在头文件中的作用在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量“重定义”的错误。在头文件中实用#ifndef #define #endif能避免头文件的重定义。方法:例如要编写头文件test.h在头文件开头写上两行:#ifndef _TEST_H#define _TEST转载 2017-08-02 17:02:59 · 841 阅读 · 0 评论 -
C++命名空间 namespace的作用和使用解析
一、 为什么需要命名空间(问题提出)命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。1、全局变量的作用域是整个程序,在同一作用域中不应有两个或多个同名的实体(e转载 2017-11-27 14:49:30 · 304 阅读 · 0 评论 -
malloc、calloc、realloc的区别
(1)C语言跟内存分配方式从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.从堆上分配,亦称动态转载 2017-11-27 15:25:32 · 165 阅读 · 0 评论 -
把一个大型程序放入一个单一的源文件中有什么优缺点?
优点链接时间较少避免了重复定义的错误避免了声明缺点难以阅读和维护对文件的一点改动,都需要重新编译这个大文件,这时比分成几个小文件后,只重新编译有改动的文件的编译时间长。...原创 2019-07-09 16:38:29 · 728 阅读 · 0 评论 -
FileGDBAPI学习
FileGDBAPI学习环境:vs2010 win7_64首先可以在官网上下载对应版本的源码及例子 这里贴出官网下载地址http://appsforms.esri.com/products/download/#File_Geodatabase_API_1.3(下载速度比较慢) 这里我贴出我的环境对应的(点击下载)(密码:e4wl)熟悉 并编译例子 下载的压缩包解转载 2018-01-08 16:40:04 · 3855 阅读 · 0 评论 -
C/C++ 数据范围int
速查表:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 Bytes)int -2147483648 ~ +2147483647 (4 Byt转载 2018-01-08 16:33:28 · 965 阅读 · 0 评论 -
C++: string 中find函数的用法以及string::npos的含义
问题:有两个字符串a、b, 现想判断a字符串是否包含b字符串,该如何设计程序?思路:此处需要用到string库中的find函数与npos参数。先说说string::npos参数: npos 是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type 许多容器都提供这个东西。取值由实现决定,一般是-1,这样做,就不会存在移植的问题了。转载 2018-01-05 11:37:36 · 2256 阅读 · 0 评论 -
C/C++中sizeof()的用法——32位和64位下的sizeof()
机器平台:X86_64 处理器操作系统:Red Hat 4.1.2-14编译器: gcc version 4.1.2 20070626 Size of char is: 1Size of unsigned char is: 1Si转载 2018-01-11 16:08:33 · 471 阅读 · 0 评论 -
中_FILE_和_LINE_怎么用
这是编译器内置宏,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息。例如:printf("FILE: %d, LINE: %d, %s/n", "__FILE__, __LINE__, "这里写上相关信息");ANSI C标准中几个标准预定义宏:__LINE__:在源代码中插入当前源代码行号;_转载 2018-01-11 16:03:45 · 422 阅读 · 0 评论 -
C++之tinyXML使用
tinyXML一款很优秀的操作C++类库,文件不大,但方法很丰富,和apache的Dom4j可以披靡啊!习惯了使用java类库的我看到这么丰富的c++类库,很高兴!它使用很简单,只需要拷贝几个文件到你的工程中,没有STL也可以编译运行。 下面我从这几个方面谈谈对tinyXML类库的使用以及理解。 首先在sourceforge上下载tinyXML类库,地址:h原创 2017-11-27 16:47:55 · 223 阅读 · 0 评论 -
对 static const char* const str[] = {“string”} 的理解
static const char* const str[] = {“string”}静态常量型指针变量 static const char*常量型变量 const str[]这样修饰的作用为指针 str 不能做修改、做运算 即 str++,str-- 非法 该指针为 only-read变量 str 中的内容不能修改 该变量为 only-read转载 2017-11-27 15:38:46 · 3370 阅读 · 0 评论 -
About the pause of C++ win32 console application
想要使C++控制台应用程序暂停,呈现命令行窗口的办法有如下几种:一、针对Microsoft#include (1)第一种方式system( "PAUSE "); -------------------- (2)第二种方式getchar(); // 这招对QT程序也有用--------------------- (3)第三种方式Sleep();原创 2017-06-17 22:44:38 · 300 阅读 · 0 评论 -
关于C++ const 的全面总结
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 如下表所示:No.作用说明参考代码转载 2014-10-10 14:23:53 · 349 阅读 · 0 评论 -
C++开发中内存分配及堆和栈的区别
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。原创 2014-07-26 23:43:50 · 398 阅读 · 0 评论 -
控制台程序参数解读(再也不用愁看不懂控制台程序了)
int main(int argc,char* argv[]) argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i; for (i原创 2014-07-26 23:23:19 · 1382 阅读 · 0 评论 -
VC中数字与字符串转换方法
VC中数字与字符串转换方法 字符串转数字1.CRT函数 ASCIIUNICODETCHARVS2005intatoi_wtoi_tstoi_ttoi_atoi_l_wto转载 2014-07-26 23:16:48 · 567 阅读 · 0 评论 -
C++中Static的完全解析
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#include v转载 2014-07-23 14:21:57 · 345 阅读 · 0 评论 -
C++的类型转换符static_cast...
C 风格(C-style)强制转型如下:(T) exdivssion // cast exdivssion to be of type T函数风格(Function-style)强制转型使用这样的语法:T(exdivssion) // cast exdivssion to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的转载 2014-07-23 11:45:14 · 381 阅读 · 0 评论 -
C++枚举类型
参考文献:[1]C++程序设计语言(特别版), 裘宗燕译, 机械工业出版社[2]C++ Primer (3rd Ed.), S.B. Lippman and J. Lajoie, 人民邮电出版社1、枚举enum的用途浅例 写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, ra转载 2014-06-25 11:55:16 · 366 阅读 · 0 评论 -
头文件为什么要加#ifndef #define #endif
#ifndef 在头文件中的作用在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量“重定义”的错误。在头文件中实用#ifndef #define #endif能避免头文件的重定义。方法:例如要编写头文件test.h在头文件开头写上两行:#ifndef _TEST_H#define _TEST转载 2014-06-26 16:42:09 · 419 阅读 · 0 评论 -
AfxMessageBox和MessageBox区别
如果用MFC的话,请尽量使用afxmessagebox,因为这个全局的对话框最安全,也最方便。 但是在WIN32 SDK的情况下只能使用MESSAGEBOX。MessageBox()是Win32API函数.后者是mfc中的全局函数.在MFC中能用MessageBox()的地方都能用AfxMessageBox().afxmessagebox更多的时候是用于调试AfxMes转载 2014-06-25 10:55:27 · 390 阅读 · 0 评论 -
循环体的效率
C++/C循环语句中,for语句使用频率最高,while语句其次,do语句最少用。下面讨论一下循环体的效率,提高循环体效率的基本办法是降低循环体的复杂性。##在多重循环中,如果有可能应当将最长的循环体放在最内层,最短的循环放在最外层,以减少跨切循环体的次数。图1 低效率:长循环在最外层 图2 高效率:长循环在最内层##如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到原创 2014-06-19 16:53:13 · 968 阅读 · 0 评论 -
__declspec(dllexport)和__declspec(dllimport)
__declspec(dllexport) __declspec(dllexport) 将一个函数声名为导出函数,就是说这个函数要被包含她的程序之外的程序调用。 extern "C" 指示编译器用C语言方法给函数命名。 在制作DLL导出函数时由于C++存在函数重载,因此__declspec(dllexport) func原创 2014-08-08 11:53:47 · 418 阅读 · 0 评论 -
C++中的类型强制转换
C++ 同时提供了四种新的强制转型形式(通常称为新风格的或 C++ 风格的强制转型): const_cast(expression) dynamic_cast(expression) reinterpret_cast(expression) static_cast(expression) 每一种适用于特定的目的:转载 2014-10-09 11:18:23 · 356 阅读 · 0 评论 -
区分重载(overload),覆盖(Override)和隐藏(hide)
重载overload,这个概念是大家熟知的。在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制就是重载。重载不关心函数的返回值类型,即返回类型不同无法构成重载。此外,C++ 中的const成员函数也可以构成overload。 总结一下重载的特征: 1、处在相同的空间中,即相同的范围内; 2转载 2014-10-09 11:01:32 · 385 阅读 · 0 评论 -
C++和STL参考手册
C++和STL参考手册:http://www.cppreference.com/wiki/starthttp://www.cplusplus.com/ sgi stl programmer's guide:http://www.sgi.com/tech/stl 一个很好的stl中文网站:http://www.stlchina.org/原创 2014-10-09 10:19:39 · 7083 阅读 · 2 评论 -
Effective C++笔记
1.用empty()来代替检查size()是否为0转载 2014-09-23 14:20:12 · 350 阅读 · 0 评论 -
__declspec(dllimport)的作用
是时候总结一下__declspec(dllimport)的作用了。可能有人会问:__declspec(dllimport)和__declspec(dllexport)是一对的,在动态链接库中__declspec(dllexport)管导出,__declspec(dllimport)管导出,就像一个国家一样,有出口也有进口,有什么难理解的呢?这是一种很自然的思路,开始我也是这样理解。转载 2014-08-08 10:16:35 · 345 阅读 · 0 评论 -
c++单件模式
1. 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。2. 动机 对一些类来说,只有一个实例是很重要的。虽然系统中可以有许多打印机,但却只应该有一个打印假脱机( printer spooler),只应该有一个文件系统和一个窗口管理器。一个数字滤波器只能有一个A / D转换器。一个会计系统只能专用于一个公司。 我们怎么样才能保证一个类只有一个转载 2014-08-08 10:44:17 · 447 阅读 · 0 评论 -
C++单件模式的实现
单件模式:其实就是保证了一个类有且仅有一个对像,又提供一个全局访问方法。对某些类来说,希望它只有一个对像,那么用单件模式设计再好不过了。很多人在刚开始时不知道Ogre中getSingleton()、getSingletonPtr()是什么意思(我刚开始也不懂),其实它就是用了单件模式,用来获取实例指针。比如Ogre中的MeshManager、SceneManager等都使用了单件模式。如何原创 2014-08-08 11:49:13 · 1564 阅读 · 0 评论 -
c++ 设计模式之单件模式
单件模式应该是所有设计模式中最简单的一个了,但是如果使用不当会出现很多问题,下面我们就分析一下单件模式作用:保证一个class只有一个实体(instance),并为它提供一个全局唯一的访问点 适用性:1、对于一个类(对象),如果它比较大(占用的系统资源非常多),而且这些资源可以被全局共享,则可以设计为singleton模式。2、对于一个类,需要对实例进行计数。可以在In转载 2014-08-08 15:01:19 · 421 阅读 · 0 评论