![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
学习
名为cainiaocl的搬运工
这个作者很懒,什么都没留下…
展开
-
C语言指针、数组
什么是指针?1.指针是一个变量的地址。所以也可以说指针就是地址。或者说地址就是指向变量的指针。我们可以通过资源地址(指针)访问网络资源那么怎么让用变量的地址访问变量的值?我们需要利用“指针运算符”实现,如:*&c,这样太费劲了,我直接c不久完毕了吗,但他们是等价的,在某些情况下利用指针效率会更高,因为他直接访问地址就可以拿到地址里面的内容。什么是指针变量?我们可以定义一个变量来存放变量c的地址,我们就把专门用于存放指针的那个变量,叫做指针变量,如:int num = 7; int *a原创 2021-05-22 14:59:52 · 95 阅读 · 0 评论 -
C语言实现mmap
什么是mmap?mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数,所以使用mmap的效率是比,read, write的效率更高的头文件#include <sys/mman.h>原型void* mmap(void add原创 2020-05-15 20:19:05 · 899 阅读 · 0 评论 -
C/C++学习笔记: 字符串匹配Sunday算法
Sunday算法Sunday 算法于 1990 年 Daniel M.Sunday 提出的字符串模式匹配。其效率在匹配随机的字符串时比其他匹配算法还要更快。Sunday 算法的实现可比 KMP,BM 的实现容易太多,而且速度上也是快上两三倍。核心思想在匹配过程中,不需要模式字符串以确保从左到右或从右到左按比较以比较发现不匹配,算法可以跳过尽可能多的字符进行下一个匹配,从而提高了匹配效率。具...原创 2020-04-29 20:33:20 · 9245 阅读 · 2 评论 -
学习笔记:C++ string
stringC ++字符串类在内部使用char数组存储字符,但是所有的内存管理,分配和null终止都由字符串类本身来处理,这就是为什么它易于使用。由于类似于矢量的动态内存分配,因此可以在运行时更改C ++字符串的长度。由于字符串类是容器类,因此我们可以使用类似于矢量,集合和映射之类的其他容器的迭代器来迭代其所有字符string 拼接#include <iostream>usi...原创 2020-02-25 07:05:19 · 84 阅读 · 0 评论 -
xxx_cast强制类型转化
static_cast:在一个方向上可以隐式转化,在另一个方向上,可以显示的静态转化using namespace std;int main(){//这是双隐(普通类型) int t ; double d; d = static_cast<double>(t); t = static_cast<int>(d); d = st...原创 2020-02-24 08:29:21 · 74 阅读 · 0 评论 -
学习笔记:new、delete的堆内存操作
newC / C ++中的动态内存分配是指程序员手动执行内存分配。动态分配的内存在堆上分配,非静态和局部变量在堆栈上分配内存有什么应用?动态分配内存的一种用途是分配可变大小的内存,而可变长度数组除外,这是编译器分配的内存无法实现的。 最重要的用途是为程序员提供了灵活性。无论何时需要和不再需要,我们都可以自由分配和释放内存。在许多情况下,这种灵活性会有所帮助。此类情况的示例是“...原创 2020-02-23 11:16:19 · 191 阅读 · 0 评论 -
学习笔记:C++ 引用 以及与指针的区别
C++中的引用当变量声明为引用时,它将成为现有变量的替代名称。通过在声明中添加“&”,可以将变量声明为引用#include<iostream> using namespace std; int main() { int x = 10; // ref is a reference to x. int& ref = x; ...原创 2020-02-23 07:07:49 · 209 阅读 · 0 评论 -
学习笔记:更加快捷的for遍历vector元素
一般情况我们修改或者遍历vector元素是怎样的呢? vector<int> vect{1, 2, 3, 4}; for(int i = 0; i < vect.size(); i++){ cout << vect.at(i) << " "; 其实我们可以更优化一点的:vector<int> vect{1, 2, ...原创 2020-02-19 23:25:03 · 300 阅读 · 0 评论 -
解决在linux环境下的clion 运行不了thread的问题
问题我们在linux下使用clion编程时,遇到这种情况[ 50%] Linking CXX executable Study_C_projectCMakeFiles/Study_C_project.dir/main.cpp.o: In function std::thread::thread<void (&)(int), int>(void (&)(int),...原创 2020-02-19 08:15:14 · 1579 阅读 · 0 评论 -
学习笔记:C++ 函数对象
什么是函数对象?函数对象:几乎只是一个定义operator()的类。这样就可以创建“看起来像”函数的对象。函数对象允许类的实例对象像普通函数一样被调用或调用。在C++中,这是通过重载实现的operator()。使用功能对象的好处是他们是对象,因此可以在功能对象的所有实例之间静态地或在特定实例上单独地包含状态。举个例子#include <iostream>#include &l...转载 2020-02-12 07:13:07 · 109 阅读 · 0 评论 -
C++ 类对象和类指针的区别
转载一:https://blog.csdn.net/neuqbingoye/article/details/7184090区别一很关键的一点:定义对象实例时,分配了内存,指针变量则未分配类对象所需内存。类的指针:他是一个内存地址值,他指向内存中存放的类对象(包括一些成员变量所赋的值). 对象,他是利用类的构造函数在内存中分配一块内存(包括一些成员变量所赋的值).类的指针:用的是内...转载 2020-02-10 10:49:59 · 281 阅读 · 0 评论 -
学习笔记:C++ 尾置返回类型
什么是尾置返回类型C++11 提供了一种新的书写返回值的方式,那就是将返回类型尾置。尾置的返回类型允许我们在参数列表之后申明返回的类型一般情况下我们是这样写的:int (*func(int arr[][4], int a))[3]{ return &arr[a]}看着这返回类型就是心累用尾置返回类型后嘞:int (func(int arr[][4], int a) -&g...原创 2020-02-09 20:29:22 · 386 阅读 · 0 评论 -
学习笔记:C++ 模板
C++ 模板的使用功能模板(Function templates)类模板模板专业化模块的非类型参数模板和多文件项目原文:http://www.cplusplus.com/doc/oldtutorial/templates/功能模板(Function templates)功能模板使用环境功能模板是可以与泛型类型一起使用的特殊功能。这使我们可以创建一个功能模板,其功能可以适应多种类型...原创 2020-02-09 16:37:10 · 221 阅读 · 0 评论 -
学习笔记:C++ 迭代器详细说明
维基百科迭代器(iterator)有时又称游标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如链表或阵列)上遍访的介面,设计人员无需关心容器物件的内存分配的实现细节。C++语言本身就没有迭代器的特色,但STL仍利用模板实作了功能强大的迭代器。STL容器的数据的内存地址可能会重新分配(reallocate),与容器绑定的迭代器仍然可以定位到重新分配后的正确的内存地址...原创 2020-02-07 22:33:59 · 909 阅读 · 0 评论 -
学习笔记:C++的vector详细说明
泛型什么是泛型?百度百科泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。泛型类是引用类型,是堆对象加粗样式,主要是引入了类型参数这个概念。百度百科:C++的泛型C++ 无法对泛型的类型参数进行约束。在...原创 2020-02-08 08:11:06 · 369 阅读 · 0 评论