![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
用心倾听
程序狂 爱逗你玩
展开
-
C++标准模板库函数sort那点小事
STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。sort()定义在在头文件中。sort函数是标准模板库的函数,已知开始和结束的地址即可进行排序,可以用于比较任何容器(必须满足随机迭代器),任何元素,任何条件,执行速度一般比qsort要快。另外,sort()是类属函数,可以用于比较任何容器,任何元素,任何条件。具体事例如下:char ch[20]="sdasdac转载 2012-11-10 22:18:42 · 18359 阅读 · 0 评论 -
编译错误:errno undeclared的解决
今天用eclipse编译arm linux驱动时,一直报错'errno' undeclared (first use in this function) 在网上查了N久,才发现头文件包含错了,以前是#include改为:#include即可。转载 2013-04-21 13:32:30 · 3320 阅读 · 0 评论 -
ULONG_PTR与ULONG
ULONG Unsigned LONG. The range is 0 through 4294967295 decimal. This type is declared in WinDef.h as follows:typedef unsigned long ULONG; 在VS2010中使用ULONG时,需加上头文件#include,否则出现inllisense:原创 2013-06-13 08:14:02 · 8190 阅读 · 0 评论 -
VHDL语言中方向字buffer与inout有什么异同
inout 双向,信号经端口流入和流出实体,内部可使用和更改端口信号buffer 输出方向,信号经端口流出实体,内部可使用和更改端口信号inout 与buffer 均可用于建模一个双向端口,二者的差别在于允许连接到端口引脚上的驱动信号的个数和对信号的决断方式不同。inout允许接多个驱动信号,但buffer仅允许连接单个驱动信号,并且要求连接的信号也使用方向字buffer来转载 2013-06-25 09:23:51 · 11080 阅读 · 0 评论 -
C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.引用b.常量c.静态d.静态常量(整型)e.静态常量(非整型)常量和引用,必须通过参数列表进行初始化。静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字,其本质见文末。参考下面的代码以及其中注释:#include转载 2016-03-29 15:36:54 · 301 阅读 · 0 评论 -
编译错误 error: control may reach end of non-void function
编译错误:您提交的代码无法完成编译第1行6:1: error: control may reach end of non-void function [-Werror,-Wreturn-type]}^1 error generated.产生错误的原因:在某些情况下,函数没有响应的返回。int max(int a, int b){if(a>=b) return原创 2016-03-20 16:03:01 · 42196 阅读 · 6 评论 -
C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量、外部变量)
动态存储方式与静态存储方式我们已经了解了变量的作用域。作用域是从空间的角度来分析的,分为全局变量和局部变量。变量还有另一种属性——存储期(storage duration,也称生命期)。存储期是指变量在内存中的存在期间。这是从变量值存在的时间角度来分析的。存储期可以分为静态存储期(static storage duration)和动态存储期(dynamic storage du转载 2016-05-09 18:19:11 · 3273 阅读 · 0 评论 -
C++ 虚函数表解析
C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R转载 2016-05-21 15:39:55 · 375 阅读 · 0 评论 -
编写类String的构造函数、析构函数和赋值函数
这个在面试或笔试的时候常问到或考到。 已知类String的原型为:class String{public: String(const char *str = NULL);// 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); // 析构函数 String & o转载 2016-05-21 22:53:00 · 2137 阅读 · 0 评论 -
通过引用计数实现智能指针(C++ Primer)
#include using namespace std;/************************************************************************//* 目的:通过引用计数实现智能指针 *//*********************************转载 2016-05-22 13:26:10 · 995 阅读 · 0 评论 -
C++ replace() 函数用法详解
本文主要针对c++中常用replace函数用法给出样例程序[cpp] view plain copy/*用法一: *用str替换指定字符串从起始位置pos开始长度为len的字符 *string& replace (size_t pos, size_t len, const string& str); */ int ma转载 2016-09-11 10:05:33 · 58392 阅读 · 4 评论 -
C++中的类所占内存空间总结
类所占内存的大小是由成员变量(静态变量除外)决定的,成员函数(这是笼统的说,后面会细说)是不计算在内的。摘抄部分: 成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。所谓成员函数只是在名义上是类里的。其实成员函数的大小不在类的对象里面,同一个类的多个对象共享函数代码。而我们访问类的成员函数是通过类里面的一个指针实现,而这个指针转载 2016-09-22 20:08:55 · 618 阅读 · 0 评论 -
虚函数表存放在哪里
1.虚函数表是全局共享的元素,即全局仅有一个.2.虚函数表类似一个数组,类对象中存储vptr指针,指向虚函数表.即虚函数表不是函数,不是程序代码,不肯能存储在代码段.3.虚函数表存储虚函数的地址,即虚函数表的元素是指向类成员函数的指针,而类中虚函数的个数在编译时期可以确定,即虚函数表的大小可以确定,即大小是在编译时期确定的,不必动态分配内存空间存储虚函数表,所以不再堆中.根转载 2016-09-22 21:02:39 · 26318 阅读 · 6 评论 -
什么是对象,为什么要面向对象,怎么才能面向对象?
一、 面向对象,这个对象到底是什么? 这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面向类的实例编程。对象的定义是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。也有的定义为“一切都是对象”然而面向对象也不能简单的等价转载 2016-09-22 22:29:23 · 1542 阅读 · 0 评论 -
C与C++动态分配,释放内存的区别
1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.转载 2013-04-19 16:44:36 · 635 阅读 · 0 评论 -
warning: incompatible implicit declaration of built-in function ‘exit’
有包含头文件,gcc下没包含头文件会给warning加入头文件#include原创 2013-04-27 14:32:05 · 612 阅读 · 0 评论 -
warning: missing sentinel in function call
在写一个练习时候出现的.觉得奇怪,因为翻译说缺少哨兵??什么意思呢...=====================================/*//练习如下,创建一个进程*/#include #include #include int main(void){printf("Running ps with execlp\n");execlp("p转载 2013-04-27 13:12:28 · 668 阅读 · 0 评论 -
C++头文件引用注意事项
#include #include string st("test string"); error C2065: 'string' : undeclared identifier 解释:#include using namespace std; 因为在using namespace std; 情况下, #include 是使用C++ string 类库;#i转载 2012-11-11 10:46:07 · 1046 阅读 · 0 评论 -
C++ using namespace std 详解
C++ using namespace std 详解所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。一、与的区别和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。后缀为.h的头文件c++标准已经明确提出不支持了,早些的转载 2012-11-11 11:09:22 · 339 阅读 · 0 评论 -
delete与delete[]需要注意的地方
delete与delete[]需要注意的地方1:首先来说一个大家容易忽略的问题:定义:int *p=new int;这个大家一看就知道,在内存中分配了一个int类型的空间,没错。但是我想说的是,操作系统在堆在分配了一个int类型空间给p指向的空间,但是p本身的值是在栈上,我觉的明白这个很重要。比如,你需要处理一个海量数据,这个数据需要用二维数组来表示,你如果这样定义int *ptr转载 2012-12-19 08:25:03 · 439 阅读 · 0 评论 -
C++ 标准头文件与C头文件区别与联系以及C风格字符串
1、cstdlib是C++里面的一个常用头文件, 等价于C中的。2、一般一个带“.h” 扩展名的库文件,比如iostream.h。这是延续C语言的,为了兼容C。在新标准的库中都有一个不带".h"扩展名的相对应,区别除了后者好多改进之处,还有一点就是后者的东西都放进了“std”名字空间中。但是 string.h有点特别,问题在于C++要兼容C的标准库,C的标准库里也有一个名字叫做"str转载 2012-12-19 17:06:06 · 814 阅读 · 0 评论 -
MFC IntelliSense: #error 指令: Please use the /MD switch for _AFXDLL build
mfc工程中编译遇到这样的错误 网上随便点开 有两种结果:1:工程->属性->配置属性->c/c++->代码生成->运行时库->多线程调试DLL(/MDd)2:工程->属性->配置属性->c/c++->代码生成->运行时库->多线程DLL(/MD)我建立的工程原来就是1的配置 报错 改成2的 不出那个错了原创 2013-04-23 20:43:23 · 1637 阅读 · 0 评论 -
在VS2010中去掉ipch和sdf文件方法
使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大。本文介绍两种方法使得在vs2010中不产生.sdf和ipch文件 方法一:Tools->Options->Text Editor->C/C++->Advanced->Disable Database,设置为True但是这样的办法会转载 2013-04-23 21:13:48 · 619 阅读 · 0 评论 -
VS2010类向导窗口太大
VS2010里面建立了一个对话框程序,打开对话框的类向导以后,发现这个对话框窗口太大了,确定,取消和应用三个按钮都在窗口里面都显示到最底部,用鼠标也点不到,而且还不能够调节窗口大小,打开项目属性窗口也是这样,设置不了项目属性,如下图:上网查资料说这个向导窗口的大小是不能改变的,出现这样的问题要查看两个方面:1·分辨率设置过低了,将分辨率调高,自然就显示全了2·设置了大字体模式,这个情况要在原创 2013-04-24 08:03:52 · 2991 阅读 · 1 评论 -
error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format (...)
错误 1 error C2664: “void ATL::CStringT::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [12]”转换为“const wchar_t *” 这个错误即是当我们用CString str;str.Format(....) 的时候出现的,这个还是一个编码问题...VS2010中,编转载 2013-04-24 20:58:13 · 4273 阅读 · 2 评论 -
Unicode字符集 和 多字节字符集的一些说明(转)
在编译许多程序的时候,我们常常会出现诸如指针转换错误或者const char[] 不能转换成XX的错误,这时很可能就是项目编码的问题了,如果您使用的是VS编程环境,那么打开工程属性,里面就有个选项是给你选择采用多字符集还是采用unicode。而对于这两者,我坚定不移的喜欢unicode~ 在多字节环境下,系统会按照ASCII字符表中128个字符进行截断操作,由于汉字是占用两个的字节的,所转载 2013-04-24 21:14:20 · 617 阅读 · 0 评论 -
C++通过ostringstream实现任意类型转string
再使用整型转string的时候感觉有点棘手,因为itoa不是标准C里面的,而且即便是有itoa,其他类型转string不是很方便。后来去网上找了一下,发现有一个好方法:#include #include #include using namespace std;int main(){ int a = 55; double b = 65.123; string s转载 2013-04-17 16:48:59 · 1046 阅读 · 0 评论 -
无法找到“XXX.exe”的调试信息,或者调试信息不匹配
"无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件"Debug模式,运行时完全正常,但是一调试就出现对话框,显示出错信息: “无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。” VC项目是空项目。发现其他的项目都可以调试,就“空项目”不行。 解决方法:首先打开菜单 项目->项目属性页 1。选择 配转载 2013-04-25 15:34:03 · 628 阅读 · 0 评论 -
c++中string类成员函数c_str()
1.string类成员函数c_str()的原型:const char *c_str()const;//返回一个以null终止的c字符串2.c_str()函数返回一个指向正规c字符串的指针,内容和string类的本身对象是一样的,通过string类的c_str()函数能够把string对象转换成c中的字符串的样式;3.操作c_str()函数的返回值时,只能使用c字符串的操作函数,转载 2013-04-17 18:15:16 · 633 阅读 · 0 评论 -
为什么要用单例模式?
我们在编程中最常用的模式就是单例模式了,然而单例模式都用在什么场合?为什么不用静态方法而要用单例模式呢?要搞清这些问题,需要从静态方法和非静态方法的区别和联系说起。 一、静态方法常驻内存,非静态方法只有使用的时候才分配内存? 一般都认为是这样,并且怕静态方法占用过多内存而建议使用非静态方法,其实这个理解是错误的。为什么会这样,先从内存分配开始说起:托转载 2016-09-22 22:30:40 · 5172 阅读 · 0 评论