C++
文章平均质量分 71
Scl_Diligent
平凡
展开
-
C++11中lambda函数
其中,[capture]: 捕捉列表。捕捉列表总是出现在lambda函数的开始处。事实上,[]是lambda引出符。编译器根据该引出符判断接下来的代码是否是lambda函数。允许访问当前作用域下的某一个(些)变量语法上,捕捉列表由多个捕捉项组成,并以逗号分割。捕捉列表有如下几种形式:[var] 表示值传递方式捕捉变量var。[=] 表示值传递方式捕捉所有父作用域的变量(包括this)。[&var] 表示引用传递捕捉变量 var。[&] 表示引用传递捕捉所有父作用域的变量(包括this)。原创 2024-04-15 15:33:25 · 313 阅读 · 0 评论 -
Jsoncpp简单使用
Jsoncpp是个跨平台的C++开源库,提供的类为我们提供了很便捷的操作,而且使用的人也很多。新API使用方法参考(new出内存,新的API如果反复调用的话会产生大量内存碎片)jsoncpp库中的类被定义到了一个Json命名空间中。Value -> 对Json支持的数据类型进行封装/解析。旧API使用方法参考。原创 2024-04-15 11:37:21 · 416 阅读 · 0 评论 -
libcurl 简单使用
LibCurl是一个开源的免费的多协议数据传输开源库,该框架具备跨平台性,开源免费,并提供了包括HTTPFTPSMTPPOP3等协议的功能,使用libcurl可以方便地进行网络数据传输操作,如发送HTTP请求、下载文件、发送电子邮件等。它被广泛应用于各种网络应用开发中,特别是涉及到数据传输的场景。原创 2024-04-11 14:44:33 · 932 阅读 · 0 评论 -
排列组合(STL算法中next_permutation和prev_permutation剖析)
STL提供了两个用来计算排列组合关系的算法,分别是“下一个”排列next_permucation和 “上一个” 排列 prev_permutation。解决全排列问题原创 2023-03-15 20:25:20 · 535 阅读 · 0 评论 -
“const类型” 的运用,与宏定义(“define”)和(静态变量)“static”的区别(c语言)
用法:(1)数据类型(int、char....)对于const而言是透明的。(const修饰它的直接右边,不能做左值) 如:(const int SIZE =10;)等同于(int const SIZE =10;)(const int * p=&a;)等同于(int const *p=&a;)const int *p1=&a; //只读...原创 2018-04-16 00:53:07 · 1192 阅读 · 0 评论 -
函数调用栈帧过程
栈帧就是一个函数执行的环境。实际上,栈帧可以简单理解为:栈帧就是存储在用户栈上的(当然内核栈同样适用)每一次函数调用涉及的相关信息的记录单元。栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。对于一个简单的C程序的执行过程是怎么样的?我们先认识几个寄存器:eax:累加(Accumulator)寄存器,常用于函数返回值。e...原创 2019-07-21 17:37:07 · 400 阅读 · 0 评论 -
内存池
内存池:为了解决new、malloc申请内存块的大小不定,频繁使用会产生大量的内存碎片、效率低等问题。基本思想:在真正使用内存前,先申请分配一定数量的、大小相等的内存块备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。内存分配alloc():申请一定数量的、大小相等的内存块,当使用内存时,从内存池中分出一部分内存块void* alloc(si...原创 2019-01-12 14:06:40 · 229 阅读 · 0 评论 -
C++单例模式
单例模式:该类只生成一个对象,该类返回一个引用或指针(永远是指向唯一的对象),定义一个静态的方法来得到该类的唯一对象。(屏蔽构造函数,类中提供一个接口生成对象,不能依赖对象调用,不能返回类类型。)第一种,懒汉模式 /延时加载。对象存放在堆区,运行时生成对象(注意线程安全问题)class SingleTon{public: static SingleTon* getInsta...原创 2019-01-12 11:35:09 · 230 阅读 · 0 评论 -
初始化列表;常对象、静态对象的使用方法
初始换列表:class Test1{public: Test1(int a, int b) :ma(b), mb(a) { //等价 ma = b; mb = a; } void Show() { std::cout << "ma:" << ma << std::endl; std::cout << "mb:" ...原创 2018-11-30 18:19:56 · 344 阅读 · 0 评论 -
C++特性之封装:类与对象
封装:将东西包裹起来,使外界无法知道,只能通过某些特定的方式才能访问。其目的是增强安全性和简化编程,使用方无需知道其具体实现,只能通过外部接口以及特定的权限来使用其成员。C++中的类就是把属性和方法进行封装,同时对外部的访问通过访问限定符进行限制。而类是一种抽象的概念的数据类型,就像设计图一样,是对设计物抽象的描述,而真实存在的是物品。对于C++而言,对象是类的存在形式,占用内存空间。...原创 2018-11-27 12:02:23 · 351 阅读 · 0 评论 -
引用 '&' 与const
引用:由于按值传递参数时会为实参生成一个副本,需要花费大量时间和空间,并且无法修改实参。然而引用传递实参时,可以直接使用实参,并且可以修改实参。实例:int a = 10;int& b = a; //b为a的别名void Swap(int& a, int& b){ int tmp = a; a = b; b = tmp;}引用的特点:...原创 2018-11-23 00:02:39 · 195 阅读 · 0 评论 -
.c/.cpp程序生成可执行文件的过程
.c/.cpp文件生成到执行过程预编译:gcc -E main.c -o main.i main.i处理源代码文件中的“#”开始的预编译指令。如“#include”、“#define”等。具体如下: 宏替换:将所有的“#define”删除,并展开所有的宏定义。 处理条件预编译指令,如“#if" "#endif" "#elif" "#else"指令:表达式1为...原创 2018-11-19 18:05:10 · 2653 阅读 · 0 评论 -
malloc()、free()与new、delete的区别
定义与使用:malloc()和free()函数:动态内存分配(申请一块连续的指定大小的内存区域,以void *类型返回分配的内存区域地址)与释放函数(释放malloc函数给变量分配的内存空间)。C++/C语言的标准库函数。void *malloc(size_t size);void free (void *memblock);int *pC =(int *)malloc(si...原创 2018-11-18 19:26:32 · 247 阅读 · 0 评论 -
用于C和C++混合编程的 extern "C"
extern "C":C++语言提供,用来兼容C语言,实现C++代码调用C语言代码。extern "C"{代码段},代码段编译器会按照C语言的方式进行编译。(C++函数标识和C函数标识生成规则不同,所以在自己的环境里无法找到调用函数)extern: 可以置于变量或函数前,以表示变量或函数的定义在别的文件中可以使用。提示编译器遇到该函数时在其他文件中寻找其定义。extern也可用于进行连...原创 2018-11-12 16:24:36 · 267 阅读 · 0 评论 -
C++内联函数
内联函数:在编译期间,建议编译器在该函数被调用的地方生成函数体代码的副本,以避免函数调用的开销。但这往往会使程序变得很大。定义:限定符inline +函数体inline double Cube(double a){ return a*a*a;}int main(){ double v = Cube(3.2); printf("%f\n ",v); return 0;...原创 2018-11-12 15:18:45 · 239 阅读 · 0 评论 -
带参数默认值的函数
带参数默认值的函数说明:函数有一个或多个的参数有默认值;如float Area(float r = 3.5); int Sum (int a,int b = 5, int c =10)。带参数默认值函数注意:1、默认值参数只能放在函数声明或定义处,一般放在函数声明中。int Fun(int a, int b, int c = 9);int Fun(int a, int b, ...原创 2018-11-12 12:26:51 · 3454 阅读 · 0 评论 -
C/C++函数符号生成规则(函数名的修饰);C++ 函数重载
函数符号(函数的名字修饰):在编译阶段生成的字符串,来指明函数的定义或原型 。C函数符号生成规则:_cdel调用约定(C标准调用约定):函数名前加下划线。_stdcall调用约定:函数名前加下划线,函数名后加“@”符号和其参数字节。_fastcall调用约定:函数名前加“@”符号,函数名后加“@”字符和其参数字节。C++函数符号生成规则:_cdecl调用约...原创 2018-11-12 14:36:51 · 4061 阅读 · 1 评论