C++
文章平均质量分 74
真的胜哥
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Reactor与Proactor
reactor,proactor原创 2020-09-20 16:58:58 · 565 阅读 · 0 评论 -
[设计模式]单例模式
单例模式//懒汉式class single{private: //静态成员,需要在类外定义 static single *p; //静态成员函数只能访问静态成员 static pthread_mutex_t lock; //私有构造函数 single() { pthread_mutex_init(&lock, NULL); } ~single(){}public: static single* getInstance();}原创 2020-09-20 16:15:53 · 97 阅读 · 0 评论 -
restrict关键字与memcpy/memmove
restricthttps://baike.baidu.com/item/restrict/7384270?fr=aladdin关键字restrict:告诉编译器所有修改该指针所指向内存中内容的操作都会通过该指针来修改,而不会通过其它途径(其它变量或指针)来修改,方便编译器做出优化;然而,编译器不会检查您是否遵循了这一限制,所以必须由程序员自己来遵循规范;实例1://~/C++/restrict/restrict_1.c//编译命令:gcc restrict_1.c -o restrict原创 2020-08-28 21:58:15 · 467 阅读 · 0 评论 -
Bazel使用
来源:Bazel学习接触bazelBazel用于构建项目,可用于linux和windows。工作区工作区是一个存放了所有源代码和Bazel编译输出文件的目录,也是整个项目的根目录。同时它包含一些bazel认识的文件:WORKSPACE文件,用于指定当前文件夹就是一个Bazel的工作区,所以WORKSPACE文件总是存在于项目的根目录下;一个或多个BUILD文件,告诉Bazel怎么构建项目的不同部分。(如果工作区中的一个目录包含BUILD文件,那么它就是一个package)。那么要指原创 2020-06-24 11:27:03 · 1221 阅读 · 0 评论 -
[STL]序列式容器
定义概要class vector{public: typedef value_type* iterator; //迭代器就是指针 typedef value_type& reference;. . .protected: iterator start; //目前使用空间的头 iterator finish; //目前使用空间的尾 iterator end_of_storage; //目前可用空间的尾public: //O(1) iterator begi原创 2020-06-06 23:27:55 · 226 阅读 · 0 评论 -
[STL]树
GITHUB:红黑树红黑树简介红黑树本质上就是一棵二叉查找树,但它在二叉查找树的基础上增加了着色和相关的性质使得红黑树相对平衡,从而保证红黑树的查找,插入,删除时间复杂度最坏为O(log n)。红黑树具有5个性质:每个节点要么是红的,要么是黑的;根节点是黑的;每个叶节点(NULL节点)都是黑的;如果一个节点是红色的,那么它的两个子节点都是黑的;对于任一节点而言,其到叶子节点的每一条路径都包含相同数量的黑节点。上面的5个性质使得一棵n个节点的红黑树始终保持log n 的高度,从而使得红原创 2020-06-05 14:39:32 · 416 阅读 · 0 评论 -
C++智能指针
野指针与悬空指针文章目录为什么要引入智能指针普通指针的问题auto_ptrauto_ptr解决的问题auto_ptr存在的问题shared_ptrshared_ptr介绍shared_ptr存在的问题weak_ptrunique_ptr为什么要引入智能指针普通指针的问题普通指针总是牵扯到许多问题,例如指针所指对象的生命周期,悬空指针和内存泄露等;悬空指针:悬空指针:指针最初指向的内存已经被释放的一种指针:#include <stdlib.h>#include <stdio.原创 2020-05-31 00:17:22 · 488 阅读 · 0 评论 -
[关键字]volatile
C/C++ 中 volatile 关键字详解为什么要有volatileA volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the language so that aggressive optimizations must be avoided.大意是:volatile关键字所修饰的对象不能被编译器优化。volatile关键字是一种类型原创 2020-05-30 16:53:21 · 282 阅读 · 0 评论 -
C函数调用栈
《Linux内核完全注释》3.4节:C与汇编程序互相调用C函数调用机制大多数CPU上的程序使用栈来支持函数调用操作。栈被用来传递函数参数、存储返回信息、临时保存寄存器原有值以备恢复以及用来存储局部变量。单个函数调用操作所使用的栈部分被称为栈帧,结构如下所示。栈帧的两端由两个指针来指定:寄存器ebp通常叫做帧指针,而寄存器esp则用作栈指针;栈指针的值会随着数据的入栈和出栈而一旦,因此函数中对大部分数据的访问都是基于帧指针ebp进行的,帧指针ebp向上可以访问到函数参数,向下可以访问到局部变量等。原创 2020-05-27 19:56:46 · 1273 阅读 · 0 评论 -
互斥锁、递归锁、读写锁、自旋锁
https://www.cnblogs.com/evenleee/p/11309156.html互斥锁共享锁的使用时互斥的,即一个线程获得资源的使用权后就会为该资源加锁,使用完后会将其解锁,所以在使用过程中有其它线程想要获得该资源的锁,那么它就会被阻塞陷入睡眠的状态,直到资源被解锁才会被唤醒,如果被阻塞的资源不止一个,那么他们都会被唤醒,但是获得资源使用权的是第一个被唤醒的线程,其它线程又陷入沉睡。递归锁同一个线程可以多次获得该资源锁,别的线程必须等待该线程释放所有次数的锁才能获得。读写锁读写锁转载 2020-05-19 12:56:34 · 214 阅读 · 0 评论 -
C++知识点汇总
const原创 2020-05-12 12:44:32 · 295 阅读 · 0 评论 -
指针常量与常量指针
常量指针://常量指针,不能通过该指针修改其指向的内容的值const int a = 0;const int b = 0;const int* p1 = &a;//等式左右两边都是const int*类型p1 = &b;//允许//常量指针,不能通过该指针修改其指向的内容的值int a = 0;int b = 0;const int* p1 = &a;...原创 2020-03-20 23:36:59 · 302 阅读 · 0 评论 -
C++顺序容器
C++primer原创 2020-03-18 20:32:31 · 181 阅读 · 0 评论 -
new/malloc
参考网站C++ reference:mallocC++ reference:new异同new/malloc都是通过系统调用brk(),sbrk()对堆进行管理的:int brk(void *addr);addr:将addr设置为未分配内存的首地址返回值:成功返回0,失败返回-1。void *sbrk(intptr_t increment);//brk()“偏移量”版本incre...原创 2020-03-18 16:51:11 · 385 阅读 · 0 评论 -
内存对齐原则
文章目录1内存对齐原则2 更多例子嵌套结构体类的对齐1内存对齐原则先看一个例子:#include<iostream>using namespace std;struct S1{ char c1; char c2; int i1;};struct S2{ char c1; int i1; char c2;};int main(){ cout <...转载 2020-03-18 11:57:19 · 1185 阅读 · 2 评论 -
输入输出流与缓冲区
文章目录1. 输入输出流1.1 什么是输入输出流1.2 管理输入输出流2. 缓冲区2.1 输出缓冲区2.2 刷新缓冲区2.3 关联输入和输出流参考资料:C++primer第五版8.1.3 P281C++primerplus第五版17.1.1 P6521. 输入输出流1.1 什么是输入输出流C++程序把输入输出看作字节流。输入时,程序从输入流中抽取字节;输出时,程序将字节插入到输出...原创 2020-03-17 22:12:00 · 620 阅读 · 0 评论 -
GCC编译器与编译过程
文章目录1.编译过程(GCC)1.1GCC介绍GNUGCC1.2 GCC的编译过程1. 预编译1.编译过程(GCC)1.1GCC介绍GNUGNU 项目创始于一九八四年,旨在开发一个类似 Unix ,且为自由软件的完整的操作系统: GNU 系统。GNU 的内核尚未完成,所以 GNU 使用 Linux 作为其内核。GNU 和 Linux 以这样的方式组合成为 GNU/Linux 操作系统,这个...原创 2020-03-17 14:44:22 · 1563 阅读 · 0 评论 -
C++友元
C++友元0.友元简介1.友元分类1.1 友元函数1.2 友元类1.3 友元成员函数0.友元简介(1)友元存在的意义(2)友元的用法在类中以friend关键字声明友元类的友元可以是其它类或者具体函数友元不受类中访问级别的限制友元可以直接访问具体类的所有成员在类中声明友元后,那么代表了这个友元类或函数就是这个类的朋友。就可以直接访问这个类的所有成员(分享所有秘密)。1.友元分...原创 2020-03-17 11:03:05 · 137 阅读 · 0 评论 -
C++继承
C++类和对象1.公有继承,保护继承,私有继承2.虚继承与非虚继承1.公有继承,保护继承,私有继承子类能访问父类的public和protected成员,设为A继承方式,父类中的B数据成员(A/B是公有,保护,私有之一),则A与B中最严格的方式决定访问权限。//公有继承 访问权限public --> public ...原创 2020-03-17 11:03:44 · 133 阅读 · 0 评论 -
C++类和对象
C++类和对象1.何时分配内存2.数组名的内涵:数组3.数组名可转换为指针常量4.数组名作为函数形参时,相当于普通指针1.何时分配内存定义类时不分配内存空间,定义该类的对象时才分配内存空间2.数组名的内涵:数组#include <iostream>using namespace std;int main(){ char str[10]; char* pStr = s...原创 2020-03-17 11:06:00 · 132 阅读 · 0 评论 -
C++虚函数与动态联编
C++虚函数与多态1.动态联编与静态联编1.动态联编与静态联编联编就是将模块或者函数合并在一起生成可执行代码的处理过程,同时对每个模块或者函数调用分配内存地址,并且对外部访问也分配正确的内存地址,它是计算机程序彼此关联的过程。静态联编是指在编译阶段就将函数实现和函数调用关联起来,因此静态联编也叫早绑定,在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于==指向对...原创 2020-03-17 11:06:12 · 1039 阅读 · 0 评论 -
Linux进程内存管理(C++内存管理)
C++储存空间管理参考word文档原创 2020-03-17 11:11:40 · 258 阅读 · 0 评论 -
文件输入输出
C++文件处理原创 2020-03-17 11:08:43 · 151 阅读 · 0 评论 -
C++面向行的输入(字符串)
0.具体参考:1、C++primer plus 78页2、https://blog.youkuaiyun.com/a1015553840/article/details/505793963、https://www.cnblogs.com/luolizhi/p/5746775.html1.cin.getline()头文件:#include<iostream>功能:get...原创 2020-03-17 11:08:25 · 386 阅读 · 0 评论 -
C++随机数的产生
一、rand()和srand()的用法(#include<random> #include<time.h>)1.rand()用法:int rand(void);说明:rand()产生的是伪随机数字,返回随机数值的范围在0至RAND_MAX 间。(RAND_MAX的值最小为32767,最大为2147483647)2.srand()用法:void...原创 2020-03-17 11:04:54 · 349 阅读 · 0 评论 -
C++基本数据类型
0.具体参考https://www.runoob.com/cplusplus/cpp-data-types.html1.基本数据类型表(1)速查表:char -128 ~ +127 (1 Byte) short -32767 ~ + 32768 (2 Bytes) 3*10...原创 2020-03-17 11:10:42 · 92 阅读 · 0 评论 -
char数组与string的操作
C++char数组与string的操作:拼接、复制等原创 2020-03-17 11:10:06 · 451 阅读 · 0 评论 -
内联函数与普通函数
内联函数写法:inline int func(int a){ }内联函数与普通函数区别:普通函数调用时需要跳转到另一个地方执行,执行完毕再跳回;内联函数调用时不用跳转到另一个地方执行,直接把该函数的代码拷贝到程序中需要调用的位置,时间开销较小但空间开销更大。...原创 2020-03-17 11:10:14 · 287 阅读 · 0 评论 -
C++const的用法
转自:https://www.cnblogs.com/xudong-bupt/p/3509567.htmlC++const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const 修饰成员变量#include<iostream>usin...原创 2020-03-17 11:11:08 · 122 阅读 · 0 评论 -
C++引用作为函数参数
使用引用作为函数参数,作用有:1.引用相当于别名,在函数中修改引用参数在函数结束后依然有效:void modify(int &a){ a = 1;}int main(){ int a = 0; modify(a); cout << a<< endl; //输出为1}2.节省空间,加上const可保证不会误改引...原创 2020-03-17 11:09:12 · 706 阅读 · 0 评论 -
C++数组名
C++数组名1.概述2.数组名的内涵:数组3.数组名可转换为指针常量4.数组名作为函数形参时,相当于普通指针1.概述(1)数组名的内涵在于数组名指代一种数据结构:数组(2)数组名有时可以转换为指向该数组的指针常量(3)数组名可能失去其数据结构内涵 ,数组名作为函数形参时,全面沦落为一个普通指针!(4) 指向数组的指针则是另外一种变量类型,仅仅意味着数组的存放地址(数组的地址就是第一个元素...原创 2020-03-17 11:09:54 · 1207 阅读 · 0 评论 -
cmath常用函数
原文:http://blog.sina.com.cn/s/blog_68e462650100l3zy.html1.绝对值函数int abs(int i) 返回整型参数i的绝对值long labs(long n) 返回长整型参数n的绝对值double fabs(double x) 返回双精度参数x的绝对值2.指数函数double pow(double x,double y) ...原创 2020-03-17 11:04:07 · 3500 阅读 · 0 评论
分享