c++
dota爱好者
略
展开
-
探讨C++内存回收
转自:http://club.topsage.com/thread-541343-1-1.html3.1 C++内存对象大会战 如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛。用C或C++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响着程序的效率和性能,更为主要的是,当我们操作内存的时候一不小心就会出现问题,而且很多时候,这些问题转载 2015-10-09 11:24:10 · 2046 阅读 · 0 评论 -
浅谈C/C++的浮点数在内存中的存储方式
转载地址:http://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为 10000100转载 2016-10-06 20:02:21 · 347 阅读 · 0 评论 -
C++中的转义序列
转载地址:http://yongchunxiaofen.top/2016/05/31/Escape-character/C++中的转义序列两类字符不能直接使用:一类是不可打印字符,例如退格等。因为没有可视的图符。另一类是有特殊含义的字符(单引号,双引号,问号,反斜线)等。这些情况下会用到转义序列,转移序列均以反斜线\开始。C++规定了如下的转义字符:转载 2016-10-06 20:47:16 · 2247 阅读 · 0 评论 -
c++11后stl容器
C++11 STL中的容器==================================================一、顺序容器:vector:可变大小数组;deque:双端队列;list:双向链表;forward_list:单向链表;array:固定大小数组;string:与vector相似的容器,但专门用于保存字符。==========转载 2016-10-06 21:15:03 · 597 阅读 · 0 评论 -
c++实现多线程简单例子
C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD SIZE_T dwStackSize,转载 2016-10-03 20:22:17 · 5003 阅读 · 0 评论 -
c++编程在线笔试中遇到多个输入时的处理案例
1,问题描述。洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左手的第一原创 2016-09-05 22:01:33 · 3454 阅读 · 0 评论 -
哈希表及处理冲突的方法
转载地址:http://blog.csdn.net/zhangdaisylove/article/details/47862753哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。这种方法的基本思想是:首先在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数。创建哈希表时,把关键字为k的元素直接存入地址为f(k)的单元;以后当查找转载 2016-09-18 16:25:02 · 710 阅读 · 0 评论 -
class和sturct的区别
转载地址:http://blog.csdn.net/yuliu0552/article/details/6717915C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,转载 2016-09-17 21:59:07 · 703 阅读 · 0 评论 -
C语言变长数组 struct中char data[0]的用法
struct MyData { int nLen; char data[0];}; 在结构中,data是一个数组名;但该数组没有元素;该数组的真实地址紧随结构体MyData之后,而这个地址就是结构体后面数据的地址(如果给这个结构体分配的内容大于这个结构体实际大小,后面多余的部分就是这个data的内容);这种声明转载 2016-07-06 16:19:10 · 2448 阅读 · 0 评论 -
sizeof()计算一个类的对象大小和sizeof(string)的问题
http://blog.csdn.net/vangoals/article/details/4264512关于类的大小sizeof()的计算首先,来看看一个只有构造函数和析构函数的空类:[cpp] view plaincopy#include using namespace std; class Ba转载 2016-04-02 15:02:03 · 1363 阅读 · 0 评论 -
C++ 虚函数在基类与派生类对象间的表现及其分析
转载地址:http://www.cnblogs.com/Romi/archive/2013/09/18/3329132.html近来看了侯捷的《深入浅出MFC》,读到C++重要性质中的虚函数与多态那部分内容时,顿时有了疑惑。因为书中说了这么一句:使用“基类之指针”指向“派生类之对象”,由该指针只能调用基类所定义的函数,如果要让基类的指针使用派生类中定义的函数,就将该函数定义为虚函数。转载 2016-07-03 18:02:23 · 1953 阅读 · 0 评论 -
自定义内存复制函数memcpy()
题目:编写memcpy 函数代码:[cpp] view plain copyvoid* Memcpy(void* dst,const void* src,size_t count) { assert(dst != NULL && src != NULL && count > 0); char* pDs转载 2016-07-03 16:56:17 · 2337 阅读 · 0 评论 -
C/C++——strcpy函数的 几种 实现 和 详细 解析
转载地址:http://blog.csdn.net/wconvey/article/details/21150103C/C++——strcpy函数的实现 和解析题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数转载 2016-07-03 16:32:00 · 3146 阅读 · 0 评论 -
彻底搞清 C/C++中a++与++a的区别
1,转载地址:http://blog.163.com/tianhit@yeah/blog/static/1657478212010722953444/2,首先 a++和++a 的定义:看个例子A: a=5; b=++a; // 相当于a=a+1;b=a; 结果是a=6,b=6B: a=5; b=a++; // 相当于b=a;a=a+1; 结果是a=6,b=5转载 2016-06-29 08:51:19 · 9542 阅读 · 3 评论 -
const常量与宏定义区别
1,转载地址:http://blog.sina.com.cn/s/blog_60d6fadc01012i52.html(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会转载 2016-06-28 11:16:02 · 5729 阅读 · 1 评论 -
C++中protected的访问权限
转载地址:http://blog.csdn.net/luoruiyi2008/article/details/7179788关于C++中protected的访问权限的讨论已经是一个很陈旧的话题了,陈旧到大家都不愿意去讨论,觉得他见到到吃饭睡觉那么自然。我再次读《C++ Primer》的时候,其中关于protected 成员的描述是这样的:protected Members转载 2016-06-27 12:49:54 · 459 阅读 · 0 评论 -
DLL动态链接库的工作原理
转载地址:http://blog.csdn.net/woshinia/article/details/7919281#comments"动态链接"这几字指明了DLLs是如何工作的。对于常规的函数库,链接器从中拷贝它需要的所有库函数,并把确切的函数地址传送给调用这些函数的程序。而对于DLLs,函数储存在一个独立的动态链接库文件中。在创建Windows程序时,链接过程并不把DLLs文件链接到程转载 2016-10-03 20:19:28 · 5116 阅读 · 0 评论 -
全局变量,局部静态变量初始化以及类静态成员变量初始化
全局变量、文件域的静态变量和类的静态成员变量在main执行之前的静态初始化过程中分配内存并初始化;局部静态变量(一般为函数内的静态变量)在第一次使用时分配内存并初始化。这里的变量包含内置数据类型和自定义类型的对象。class B{public: B() { cout << "B constructor called" << endl; } ~B() { cout << "B原创 2016-07-05 11:32:54 · 1752 阅读 · 0 评论 -
c++语法小知识1
1,#define 不是一个执行语句,后边不用加分号2,struct { char data; int cur;}node[10];与typedef struct{char data;int cur;}node[10];的区别。前面那个是定义了一个名为node规模为10的结果体数组,后面那个是用type原创 2015-09-06 14:46:32 · 503 阅读 · 0 评论 -
如何将vector中的数据写入到txt中
1,若vector中的元素类型不是stl中的类,即为vector vec, T 是自定义类型,那么可以在T类结构中重载运算符例如:#include"iostream"#include#include"fstream"#include"ostream"using namespace std;class person{public原创 2016-03-15 19:32:20 · 11902 阅读 · 0 评论 -
C++中Vector的erase()操作以及与remove的区别
vector v;v.pushback(0);v.pushback(1);v.pushback(1);v.pushback(0);想要删除值为1的元素错误代码 vector::iterator itr = v.begin(); while (itr!=v.end()) { if (*v==1) {转载 2016-03-15 13:05:47 · 21053 阅读 · 3 评论 -
关于函数返回值的几种情况
在一个函数的内部,return的时候返回的都是一个拷贝,不管是变量、对象还是指针都是返回拷贝,但是这个拷贝是浅拷贝。 1. 如果返回一个基本类型的变量,比如:int a;a = 5;return a; 那么就会a的一个拷贝,即5返回,然后a就被销毁了。尽管a被销毁了,但它的副本5还是成功地返回了,所以这样做没有问题。 2.转载 2016-03-13 15:33:09 · 4389 阅读 · 0 评论 -
warning C4018: “<”: 有符号/无符号不匹配
出错代码: for(int j=0;j出错原因分析: detector 是一个Vector容器 ,detecot.size() 在容器说明中 被定义为: unsigned int 类型, 而j是int 类型 所以会出现: 有符号/无符号不匹配警告错误改正: 定义j为unsigned类型后就可以了即: for(unsigned int j=0;j或者: for(siz转载 2016-03-13 12:52:00 · 374 阅读 · 0 评论 -
c++ vector用法
转载地址:http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);转载 2016-02-29 20:32:12 · 1316 阅读 · 0 评论 -
c++中的左移、右移运算
移位运算包含“逻辑移位”(logical shift)和“算术移位”(arithmetic shift)。逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充。算术移位:移出去的位丢弃,空缺位(vacant bit)用“符号位”来填充,所以一般用在右移运算中。 c++中,整数分有符号数和无符号数两种,对于这两种数做左移、右移运算,稍有区别:1、如果是无符号数转载 2016-03-19 20:02:49 · 807 阅读 · 0 评论 -
c++ stl中map容器的基本用法
std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能 力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下std map内部数据的组织,std map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在std map内部所有的转载 2016-03-17 15:31:49 · 3109 阅读 · 0 评论 -
C++ STL--stack/queue 的使用方法
1、stackstack 模板类的定义在头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack s1;stack s2;stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();注意,出栈操作只是转载 2016-03-16 22:18:43 · 1122 阅读 · 0 评论 -
C++中栈区 堆区 常量区
原文地址:http://blog.csdn.net/xcyuzhen/article/details/4543264#includevoid main(){char a[]="abc";栈 char b[]="abc";栈 char* c="abc";abc在常量区,c在栈上。char* d="abc"; 编译器可能会将它与c所指向的"abc"优化成一个地方转载 2016-04-10 15:18:04 · 504 阅读 · 0 评论 -
error C2057: 应输入常量表达式
1, const int a[] = {1,2,3,4}; int f[a[2]];执行上边的语句会报错!解释:const数组a【】在编译的时候不知道其值,所以在编译的时候a[2]还不知道是多少,即是个变量,而intf[a2]]中a[2]必须要是个常量才行!2,而 const int m = 10; const int n = m; int f1[n];这样是可行的,解释原创 2016-04-06 12:54:44 · 14903 阅读 · 1 评论 -
STL STD::list使用说明
stl list使用说明使用标准的std::list进行容器数据处理时,操作比较底层。我们可以,减少引用标准MFC标准库,减少系统的大小,但同时也存在有不方便的操作之处,这里同大家分享一些使用心得...... 在使用std::list::iterator链表遍历器进行访问list STL 中的list 就是一 双向链表,可高效转载 2016-04-05 18:03:16 · 9320 阅读 · 0 评论 -
c++ STL中的set和multiset的使用
转载地址:http://blog.csdn.net/hnust_xiehonghao/article/details/7942541C++ STL set和multiset的使用std::set s;那个s这个对象里面存贮的元素是从小到大排序的,(因为用std::less作为比较工具。)1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,转载 2016-04-02 22:16:27 · 1963 阅读 · 0 评论 -
STL学习笔记
转载地址:http://www.cnblogs.com/luxiaoxun/archive/2012/12/05/2803136.html#.string 建议 使用string 的方便性就不用再说了,这里要重点强调的是string的安全性。 string并不是万能的,如果你在一个大工程中需要频繁处理字符串,而且有可能是多线程,那么你一定要慎重(当然,在多线程下转载 2016-04-02 22:03:32 · 390 阅读 · 0 评论 -
加上#include<windows.h>后出现的奇葩错误
转载地址:http://blog.csdn.net/stpeace/article/details/41733899 先来看一个没错的程序:[cpp] view plain copy #include using namespace std; struct Rectangle {转载 2016-05-10 21:55:14 · 4377 阅读 · 0 评论 -
构造函数的成员初始化列表有什么作用?
内容转载自百度知道!!以及自己代码验证!!构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:class CExample {public:int a;float b;//构造函数初始化列表CExample(): a(0),b(8.8){}//构造函数内部赋值CExample(){a原创 2016-06-27 10:20:28 · 3964 阅读 · 1 评论 -
对c++友元函数和友元类的理解
1,友元函数的定义和作用我们已知道类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开销,而影响程序的运行效率。为了解决上述问题原创 2016-06-26 20:44:00 · 1942 阅读 · 0 评论 -
为什么构造函数不能是虚函数
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数转载 2016-06-26 17:29:54 · 399 阅读 · 0 评论 -
[C/C++]在头文件中使用static定义变量意味着什么
转载地址:http://www.cnblogs.com/zplutor/archive/2011/08/06/2129401.html看到有一位同学在头文件中这么写:12static const wchar_t* g_str1 = …static const wchar_t* g_str2 = …转载 2016-03-04 21:19:40 · 1205 阅读 · 0 评论 -
C/C++中const关键字详解
为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量: const 类型说明符 变量名 常引用: const 类型说明符 &引用名 常对象: 类名 const 对象名 常成员函数:转载 2016-03-29 15:37:04 · 288 阅读 · 0 评论 -
C/C++中volatile关键字详解
1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler th转载 2016-03-29 15:14:44 · 306 阅读 · 0 评论 -
c++ assert() 使用方法
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#i转载 2016-03-16 22:19:48 · 253 阅读 · 0 评论