C++
文章平均质量分 59
Maybe______
这个作者很懒,什么都没留下…
展开
-
直接插入排序
直接插入排序(straight insertion sort),有时也简称为插入排序(insertion sort),是减治法的一种典型应用。其基本思想如下:对于一个数组A[0,n]的排序问题,假设认为数组在A[0,n-1]排序的问题已经解决了。 考虑A[n]的值,从右向左扫描有序数组A[0,n-1],直到第一个小于等于A[n]的元素,将A[n]插在这个元素的后面。 很显然,基于增量法的思想在解决这个问题上拥有更高的效率。直接插入排序对于最坏情况(严格递减的数组),需要比较和移位的次数为n(n转载 2021-01-04 16:21:35 · 314 阅读 · 0 评论 -
判断点P是否在ABC内
给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码#include<iostream>#include<algorithm>#define ABS_FLOAT_0 0.0001using namespace std;// 求三角形的面积// 根据向量求三角形的面积double funAreaTriAngle(double dAx, double dAy, double dBx, double dBy, double dCx, d原创 2021-01-02 18:27:33 · 308 阅读 · 0 评论 -
C++11系列-什么是C++11
什么是C++0x?C++0x是C++最新标准标准化过程中的曾用名,在这一系列文章中我们将介绍最新标准添加的一系列新的语言特性。在2011年9月份,C++0x正式由官方发布并命名C++11,现在很多编译器已经支持了部分C++11特性。C++11包括大量的新特性:主要特征像lambda表达式和移动语义,实用的类型推导关键字auto,更简单的容器遍历方法,和大量使模板更容易使用的改进。这一系列教转载 2016-11-27 16:44:24 · 346 阅读 · 0 评论 -
GCC/G++编译器和VS IDE中的一些预定义宏和用户自定义宏
预定义宏, 编译器通常会根据平台和编译选项的不同,为被编译的程序提供不同的预定义的宏,例如WIN32 WIN64 LINUX, 例如DEBUG, RELEASE.1. 在使用gcc/g++编译器时,可以通过以下命令打印出编译器预编译的宏。gcc -dM -E - 2. 在VS IDE中,可以参看http://msdn.microsoft.com/zh-cn/libr转载 2017-01-11 17:18:34 · 2068 阅读 · 0 评论 -
QueryPerformanceFrequency精确获取时间
QueryPerformanceFrequency是操作系统的性能统计分辨率,也就是每秒钟统计多少次的意思。QueryPerformanceCounter 是系统性能统计计数器,表示统计了多少次,除以QueryPerformanceFrequency,得到系统运行时间(秒数)。QueryPerformanceCounter2-QueryPerformanceCounter1原创 2017-02-17 10:12:51 · 5725 阅读 · 0 评论 -
linux, windows, mac, ios等平台GCC预编译宏判断
写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码。而跨平台c/c++编程,GCC基本在各平台都可以使用。整理了一份各平台预编译宏的判断示例。需要注意几点:* windows32/64平台_WIN32都会被定义,而_WIN64只在64位windows上定义,因此要先判断_WIN64* 所有的apple系统都会定义 __APPLE__,包括MacOSX和iOS*转载 2017-06-05 17:07:33 · 1130 阅读 · 0 评论 -
C++类所占内存大小计算
C++类所占内存大小计算转载时请注明出处和作者联系方式文章出处:http://blog.csdn.net/chenchong08作者联系方式:vision_chen@yeah.net说明:笔者的操作系统是32位的。class A {}; sizeof( A ) = ?sizeof( A ) = 1明明是空类,为什么编译器说它是1呢?空类同样可以实例化,每个实例在转载 2017-07-17 13:22:00 · 626 阅读 · 0 评论 -
显示调用析构函数被g++编译器优化掉不执行
最近程序在linux下运行几个小时后会出现崩溃,从coredump文件没有查找出崩溃的原因,于是,编译了一份debug版本的程序放在服务器上,却发现运行了几天都没有崩溃。后来通过日志的方式查找bug,最后发现是在Release编译的情况下,在程序中显示调用类的析构函数语句被优化掉,不执行。导致对象池数据清空失败。对象池的数据出现问题,导致程序崩溃。原创 2017-10-01 09:14:53 · 778 阅读 · 0 评论 -
如何判断一个文本文件内容的编码格式 UTF-8 ? ANSI(GBK)
如何判断一个文本文件内容的编码格式 UTF-8 ? ANSI(GBK)转自:http://blog.csdn.net/jiangqin115/article/details/42684017UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, 字节序标志),即0xEF, 0xBB, 0xBF,有的没有。Windows下的txt文本编辑器在保存UTF-8格式的文本文档时会自动...转载 2018-06-14 15:38:40 · 4547 阅读 · 1 评论 -
值得推荐的C/C++框架和库
值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~转载 2016-11-25 17:34:39 · 468 阅读 · 0 评论 -
C/C++的64位整型 不同编译器间的比较
在C/C++中,64为整型一直是一种没有确定规范的数据类型。现今主流的编译器中,对64为整型的支持也是标准不一,形态各异。一般来说,64位整型的定义方式有long long和__int64两种(VC还支持_int64),而输出到标准输出方式有printf(“%lld”,a),printf(“%I64d”,a),和cout 本文讨论的是五种常用的C/C++编译器对64位整型的支持,这五种编译器分转载 2016-11-25 14:14:36 · 447 阅读 · 0 评论 -
c++中try catch的用法
在c++中,可以直接抛出异常之后自己进行捕捉处理,如:(这样就可以在任何自己得到不想要的结果的时候进行中断,比如在进行数据库事务操作的时候,如果某一个语句返回SQL_ERROR则直接抛出异常,在catch块中进行事务回滚)[html] view plain copy #include iostream> #include exception> using nam转载 2016-10-14 15:33:57 · 585 阅读 · 0 评论 -
linux下sprintf_s函数的替代
windows平台下线程安全的格式化字符串函数sprint_s并非标准C函数,因此linux下无法使用,但可以使用snprintf函数代替。/*函数原型:*/int snprintf(char *dest, size_t n, const char *fmt, ...);/*函数说明: 最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n的话,将转载 2016-11-06 22:30:15 · 4956 阅读 · 0 评论 -
C++类内存分布
这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSing转载 2016-10-18 23:43:42 · 325 阅读 · 0 评论 -
C++的Enum hack
从一个例子开始吧class Game {private: static const int GameTurn = 10; int scores[GameTurn];};对于支持类内初始化的C++编译器,这段代码可以编译通过。但是较老的C++编译器,可能不支持类内初始化,这样我们的静态常量,必须要在类外初始化。如下:class Game {private:转载 2016-10-30 16:25:43 · 400 阅读 · 0 评论 -
folly学习心得
学习代码库的一般步骤1) 编译安装;2) 学习doc/manual文档;3) 学习test用例;4) 测试并使用。folly库的学习心得独立有用的小技巧Eventfd.h ---- 针对eventfd系统调用的包装器。Foreach.h ---- 伪语句(作为宏语句来实现),用于迭代。IntrusiveList.h --- 方便类型定义,用于使用boost::i转载 2016-12-06 10:08:28 · 5310 阅读 · 0 评论 -
如何使用指向类的成员函数的指针(详解!)
我们首先复习一下"指向函数的指针"如何使用?void print() { } void (*pfun)(); //声明一个指向函数的指针,函数的参数是 void,函数的返回值是 void pfun = print; //赋值一个指向函数的指针 (*pfun)(); //使用一个指向函数的指针 比较简单,不是吗?为什么*pfun需要用()扩起来呢?因为*转载 2016-11-24 15:49:21 · 1164 阅读 · 0 评论 -
C语言回调函数学习
对指针的应用是C语言编程的精髓所在,而回调函数就是C语言里面对函数指针的高级应用。简而言之,回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数是回调函数。 为什么要使用回调函数呢?我们先看一个小例子: Node * Search_List (Node * node, const int v转载 2016-11-25 09:29:14 · 327 阅读 · 0 评论 -
把C++类成员方法直接作为线程回调函数
我以前写线程时要么老老实实照着声明写,要么使用C++类的静态成员函数来作为回调函数,经常会因为线程代码而破坏封装.之前虽然知道类成员函数的展开形式,但从没想过利用过它,昨天看深入ATL时无意中学会了这一招:) 类成员方法是一个比较特殊的函数,它在编译时会被转化成普通函数,比如有TMyClass类:class TMyClass{ void Func();};这个TMyCla转载 2016-11-25 10:49:58 · 500 阅读 · 0 评论 -
C/C++函数调用的几种方式总结
调用函数时,计算机常用栈来存储传递给函数的参数。栈是一种先进后出的数据结构,栈有一个存储区、一个栈顶指针。栈顶指针指向堆栈中第一个可用的数据项(被称为栈顶)。用户可以在栈顶上方向栈中加入数据,这个操作被称为压栈(Push),压栈以后,栈顶自动变成新加入数据项的位置,栈顶指针也随之修改。用户也可以从堆栈中取走栈顶,称为弹出栈(pop),弹出栈后,栈顶下的一个元素变成栈顶,栈顶指针随之修改。函数调转载 2016-11-25 11:33:53 · 1289 阅读 · 0 评论 -
IsKindOf()函数
原文链接:http://blog.csdn.net/liang_lq/article/details/6191383知道有IsKindOf这么个函数,用来检测:(1)对象是否属于指定的类,(2)对象是否属于指定类派生的类,但是一直没用过,今天用了下,提示错误errorC2039: 'classXXX' : is not a member of'XXX',查了很多资料,才把它搞明白,转载 2016-10-24 23:57:55 · 717 阅读 · 0 评论