
c/c++
michaelhan3
这个作者很懒,什么都没留下…
展开
-
C++11中的匿名函数(lambda函数,lambda表达式)
C++11中的匿名函数(lambda函数,lambda表达式) 这篇文章是根据维基百科整理来的,原文请看:http://en.wikipedia.org/wiki/Anonymous_function#C.2B.2B C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下: [capture](paramet转载 2017-03-21 15:48:01 · 604 阅读 · 0 评论 -
C++ STL中Map的按Key排序和按Value排序
原文地址:http://blog.youkuaiyun.com/iicy266/article/details/11906189 map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map,其中学生姓名用string类型,作为Key;该学生的转载 2017-07-20 16:24:33 · 299 阅读 · 0 评论 -
c/c++ 语言随机数产生
原文地址:http://www.cnblogs.com/afarmer/archive/2011/05/01/2033715.html计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了转载 2017-07-20 15:02:31 · 1293 阅读 · 0 评论 -
char表示的范围
在计算机里面是用补码表示的。我们知道8位二进制码表示为,0000 0000 ~ 0111 1111;1000 000 ~ 1111 1111。 这些个数字在计算机中存放,而且由于在计算机中存放的是数字的补码,所以上述的两个范围表示的都是补码,那么他么对应的原码表示的具体值是多少就可以知道char类型可以表示的范围了。补码:0000 0000 ~ 0111 1111;1000 000 ~原创 2017-05-29 14:39:38 · 5296 阅读 · 0 评论 -
为什么负数除二和右移一位的结果不一样?
原文地址:http://blog.youkuaiyun.com/tinyjian/article/details/50429660问题描述:为什么负数除二和右移一位的结果不一样?这是在VS2013,C#中这是在CB中也有一些编译器,结果是一样的,但是为什么结果会是这样呢?究其原因,还得看看汇编代码,在VS2013中提供了反汇编指令转载 2017-07-06 10:00:20 · 3216 阅读 · 0 评论 -
浅谈 C++ 中的 new/delete 和 new[]/delete[]
原文地址:http://blog.youkuaiyun.com/hazir/article/details/21413833在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?new 和 delete 是函数吗?new [] 和 delete [] 又是什么?什么时候用它们?你知道 operator new 和 operator转载 2017-06-27 09:38:37 · 223 阅读 · 0 评论 -
C++中int *p[4]和 int (*q)[4]的区别 (指针数组和数组指针)
int *p[4]; //定义一个指针数组,该数组中每个元素是一个指针,每个指针指向哪里就需要程序中后续再定义了。int (*p)[4]; //定义一个数组指针,该指针指向含4个元素的一维数组(数组中每个元素是int型)。区分int *p[n]; 和int (*p)[n]; 就要看运算符的优先级了。int *p[n]; 中,运算符[ ]优先级高,先与p结合成为一个数组,再由int*说明这是一个转载 2017-06-27 17:48:00 · 4002 阅读 · 0 评论 -
拷贝构造函数为什么不能用值传递
原文地址:http://www.cppblog.com/cxiaojia/archive/2011/11/22/cpp1.html当你尝试着把拷贝构造函数写成值传递的时候,会发现编译都通不过,错误信息如下:error: invalid constructor; you probably meant 'S (const S&)' (大致意思是:无效的构造函数,你应该写成。。。)当转载 2017-06-26 22:20:00 · 2281 阅读 · 0 评论 -
C++拷贝构造函数详解
原文地址:http://blog.youkuaiyun.com/lwbeyond/article/details/6202256/一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plain copyint a = 100; int b = a;转载 2017-06-26 22:17:32 · 270 阅读 · 0 评论 -
vector的几种初始化和遍历
原文地址:http://blog.youkuaiyun.com/u011543018/article/details/50724883随着C++11标准的出现,vector出现了新的初始化和遍历用法,但是vs2010和较高版本并没有能完全支持c++11标准,所以我就将它的所有的用法归纳了一下。 vector的初始化 vector基本初始化如下: vectorv1 v1是一个空的vector转载 2017-07-08 11:37:42 · 1218 阅读 · 0 评论 -
c++ 数字与字符串的相互转换
首先推荐用用C++的stringstream。 主要原因是操作简单。数字转字符串,int float类型 同理#include <string>#include <sstream>int main(){ double a = 123.32; string res; stringstream ss; ss << a; ss >> res;//或者 res =原创 2017-07-21 17:06:36 · 93449 阅读 · 2 评论 -
std::function , std::bind 用法
转:https://blog.youkuaiyun.com/liukang325/article/details/53668046关于std::function 的用法: 其实就可以理解成函数指针 1. 保存自由函数void printA(int a){ cout<<a<<endl;}std::function<void(int a)> fun...转载 2018-09-06 14:33:01 · 303 阅读 · 0 评论 -
std::function
• 类模板声明// MS C++ 2013template<class _Fty> class function;template<class _Fty> class function : public _Get_function_impl<_Fty>::type { ... }// GCC 4.8.2template<typename...转载 2018-09-06 14:19:22 · 203 阅读 · 0 评论 -
c++11 lambda 表达式
转:https://www.cnblogs.com/ChinaHook/p/7658443.html1、 定义 lambda表达式是C++11非常重要也是很常用的特性之一,来源于函数式编程的概念,也是现代编程语言的一个特点。它有如下特点:声明式编程风格:就地匿名定义目标函数或者函数,不需要额外写一个命名函数或者函数对象,以更直接的方式写程序。 简洁:不需要额外再写一个函数或者函数...转载 2018-09-06 12:05:10 · 499 阅读 · 0 评论 -
C/C++ Volatile关键词深度剖析
转:https://www.cnblogs.com/god-of-death/p/7852394.html背景 此微博,引发了朋友们的大量讨论:赞同者有之;批评者有之;当然,更多的朋友,是希望我能更详细的解读C/C++ Volatile关键词,来佐证我的微博观点。而这,正是我写这篇博文的初衷:本文,将详细分析C/C++ Volatile关键词的功能 (有多种功能)、Volatile...转载 2018-09-06 10:39:56 · 292 阅读 · 0 评论 -
google gflags 处理命令行参数
#include <string>#include <iostream>#include <gflags/gflags.h>using namespace std;DEFINE_string(input_path, "empty" , "input file path");DEFINE_bool(show_flag, false, "show f...原创 2018-09-11 16:04:23 · 228 阅读 · 0 评论 -
c++ Eigen使用
// A simple quickref for Eigen. Add anything that's missing.// Main author: Keir Mierle#include <Eigen/Dense>Matrix<double, 3, 3> A; // Fixed rows and cols. Same as Mat...转载 2018-08-28 16:55:25 · 3114 阅读 · 0 评论 -
c++ fill函数,fill与memset函数的区别
【C++】fill函数,fill与memset函数的区别memset函数按照字节填充某字符在头文件里面fill函数按照单元赋值,将一个区间的元素都赋同一个值在头文件里面因为memset函数按照字节填充,所以一般memset只能用来填充char型数组,(因为只有char型占一个字节)如果填充int型数组,除了0和-1,其他的不能。因为只有000转载 2017-09-04 14:58:17 · 3710 阅读 · 0 评论 -
c++ new 和 vector
我们知道可以通过new操作符来创建新的对象或者动态分配一定的内存。同样vector也可以。但是这两者是有一定区别的。比方说我们现在需要设定一个数组,数组的大小为10,我们可以这样操作。int *p1 = new int[10]; //开辟10个int的内存大小,不初始化,值是随机的。// 或者 int *p1 = new int [10]();//开辟10int的内存大小,原创 2017-08-09 14:11:31 · 16983 阅读 · 0 评论 -
《C++中类对象的内存布局和占用空间》《C++ 类里面,函数占用存储空间问题 》
《C++中类对象的内存布局和占用空间》 一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。很多C++书籍中都介绍过,一个Class对象需要占用多大的内存空间。最权威的结论是:*非静态成员变量总合。转载 2017-06-26 17:06:49 · 628 阅读 · 0 评论 -
C++类型转换详解--const_cast
原文地址:http://blog.youkuaiyun.com/lwbeyond/article/details/6213382一. 函数描述:const_cast ( expression )主要是用来去掉const属性,当然也可以加上const属性。主要是用前者,后者很少用。去掉const属性:const_case (&num),常用,因为不能把一个const变量直接赋给转载 2017-06-26 15:33:46 · 322 阅读 · 0 评论 -
原码、反码、补码和移码
原码:如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1。剩下的n-1位表示概数的绝对值。例如: X=+101011 , [X]原= 00101011 X=-101011 , [X]原= 10101011 位数不够的用0补全。PS:正数的原、反、补码都一样:0的原码跟反码都有两个,因为这里0被原创 2017-05-29 13:28:22 · 718 阅读 · 0 评论 -
C/C++之回调函数
原文地址:http://www.cnblogs.com/chenyuming507950417/archive/2012/01/02/2310114.html今天讨论下C/C++中的回调函数。 在理解“回调函数”之前,首先讨论下函数指针的概念。函数指针(1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定转载 2017-05-09 09:54:08 · 223 阅读 · 0 评论 -
只编译一次头文件
#pragma once是编译器相关的,有的编译器支持,有的编译器不支持,具体情况请查看编译器API文档,不过现在大部分编译器都有这个杂注了。#ifndef,#define,#endif是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式。方式一:#ifndef _SOMEFIL原创 2017-04-26 15:12:02 · 1881 阅读 · 0 评论 -
vector动态二维数组(容器的容器)占用内存分析
原文地址:http://blog.youkuaiyun.com/kangroger/article/details/38386099之前在这里写过一篇“C++中的动态二维数组”。在C++中没有动态二维(多维)数组。但是根据原理我们可以自己创建。在看过STL的vector源代码后"《STL源码剖析》---stl_vector.h阅读笔记"后,想到可以用容器的容器来做二维数组。创建一个2x转载 2017-05-08 21:43:36 · 986 阅读 · 0 评论 -
vector内存机制和性能分析
原文地址:http://blog.youkuaiyun.com/mfcing/article/details/8746256一些好的公司校园招聘过程中(包括笔试、面试环节),经常会涉及到STL中vector的使用(主要是笔试)及其性能(面试)的分析。今天看了下相关文章,也写了几个小的测试程序跑了跑。算是总结下,希望对需要的人有帮助。关于vector,简单地讲就是一个动态数组,里面有一个指针转载 2017-05-08 21:42:45 · 299 阅读 · 0 评论 -
c++ 测试程序运行时间
C++的库函数中,已经给我们提供了这样的方法,clock(),我们可以使用它来计算程序的运行时间, 计算程序运行时间使用的知识点: 1clock_t 2clock() 3CLOCKS_PER_SEC 这些库函数、类型和常量都是定义在ctime库中的。下面就解释一下吧! 1clock_t数据类型,其实,当你打开time.h就知道了,就是个long型,用来记录一段时间内的clo原创 2017-04-16 20:19:44 · 4881 阅读 · 0 评论 -
c++ 中将int 转为string
int a = 100;string str = to_string(a);原创 2017-04-16 19:38:41 · 544 阅读 · 0 评论 -
c/c++静态变量static详解
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这转载 2017-01-23 13:27:52 · 1192 阅读 · 0 评论 -
浮点数在内存中的表示移位存储难点的理解
我们知道,单精度浮点数,在内存中是使用32位存储;那么这8位组成的新的字节,我们来用下面的一串数字;00000000;对的,实际上这个就是浮点数幂指数(阶码)的存储空;首先,我们假设不使用移位存储(就是大家最头痛,最;00000000;开始,到;11111111;结束,也就是从0开始到255结束,一共256个.今天这里跟大家分享一下对于浮点数在内存中幂指数(也有叫阶码的)为何采转载 2017-05-29 14:41:43 · 6351 阅读 · 7 评论 -
C语言中 float double在内存中的存储
本文转载于:http://wenku.baidu.com/link?url=ARfMiXVHCwCZJcqfA1gfeVkMOj9RkLlR9fIexbgs9gDdV8rIS48A1_xe1y6YgXnSlpof5pKKJbjScy1StbVdiUWARuAYUIYiyHeTIIhVaz3 C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,floa转载 2017-05-29 14:43:15 · 506 阅读 · 0 评论 -
C语言内存字节对齐小结
原文地址:http://blog.youkuaiyun.com/andy572633/article/details/7213465在C语言面试和考试中经常会遇到内存字节对齐的问题。今天就来对字节对齐的知识进行小结一下。首先说说为什么要对齐。为了提高效率,计算机从内存中取数据是按照一个固定长度的。以32位机为例,它每次取32个位,也就是4个字节(每字节8个位,计算机基础知识,别说不知道)。转载 2017-06-09 22:43:28 · 223 阅读 · 0 评论 -
指针表达式+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?
在C语言中,我们常常用到的一个运算是让某个变量的值+1.例如 M = M + 1。而在实际运用中,我们发现对于指针进行+1运算,算出来的结果是+4。如下图图中我们定义的 变量M 和指针Matrix如下:int M = 3;int* Matrix = {1,2,3};可以看到,对于M和 Matrix ,+1运算的效果是不同的。这个差异是因为转载 2017-06-30 17:58:45 · 2360 阅读 · 3 评论 -
sizeof
原文地址:http://baike.baidu.com/link?url=z4pkG54hQR5Krl7fCYcLKmerbNJRvOrBRZKVgsr4xnT8_00W2A6tpuKOASyIBWVqCaA_viq1kpu_qU0hdfFyuKC语言中编辑判断数据类型长度符的关键字sizeof用法sizeof(类型说明符,数组名或表达式); 或sizeo转载 2017-06-09 00:02:23 · 460 阅读 · 0 评论 -
悬垂指针(野指针)
原文地址:http://blog.youkuaiyun.com/crayondeng/article/details/24845191 一、迷途指针(悬垂指针) 在计算机编程领域中,迷途指针与野指针指的是不指向任何合法的对象的指针。 当所指向的对象被释放或者收回,但是对该指针没有作任何的修改,以至于该指针仍旧指向已经回收的内存地址,此情况下该指针便称迷途指针(悬垂指针)。转载 2017-06-29 11:18:17 · 1891 阅读 · 0 评论 -
二维vector 的创建
原文地址:http://blog.youkuaiyun.com/chenwk891/article/details/32933745在很多时候,类中二维数组的维度往往无法提前知道,因此需要动态地分配空间。使用new运算符是其中的一个解决方案,但是操作不当往往会造成内存溢出/泄漏。使用stl的vector可以避免这个麻烦。例如,我在一个类中定义了一个数据成员a为二维int类型ve转载 2017-06-28 21:56:58 · 2334 阅读 · 0 评论 -
关于类成员函数中访问同类对象的私有成员
关于类成员函数中访问同类对象的私有成员 原址:http://runfeel.iteye.com/blog/1904768关于类成员函数中访问同类对象的私有成员,主要包含以下几种场景:a. 在C++的类的成员函数中,允许直接访问该类的对象的私有成员变量。b. 在类的成员函数中可以访问同类型实例的私有变量。c. 拷转载 2017-06-28 20:52:45 · 2396 阅读 · 0 评论 -
将char转换为unsigned int时
char 为8位一个字节表示的有符号数,将一个char转换为unsigned int 是又会发生什么呢?看段代码:#include #include using namespacestd;int main(){ char a=0xf1; coutint)aendl; pri原创 2017-05-29 17:06:47 · 5108 阅读 · 0 评论 -
unsigned char和signed char型变量的区别,赋值后它在内存中的存储形式
原文地址:http://blog.youkuaiyun.com/suxinpingtao51/article/details/17759807在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char转载 2017-05-29 16:51:37 · 846 阅读 · 0 评论 -
C++中Overload、Overwrite及Override的区别
Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。Override(覆盖):是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)...原创 2018-09-06 16:50:59 · 1136 阅读 · 0 评论