
C++
文章平均质量分 87
C++
Liknana
嗨 祝我们都 “柿柿如意”
00后程序员 | 持续学习 | 热爱生活
养成系博主| 大前端开发者 | 可接私活
Android | 小程序| 爬虫 | 价格实惠
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 多线程异步操作
使用函数,是多线程操作中最简单的一种方式,不需要自己创建线程对象,并且可以得到子线程函数的返回值。使用类,在子线程中可以传出返回值也可以传出其他数据,并且可选择在什么时机将数据从子线程中传递出来,使用起来更灵活。使用类,可以将子线程的任务函数进行包装,并且可以得到子线程的返回值。原创 2025-01-10 20:50:41 · 887 阅读 · 0 评论 -
C++ 原子变量
原子变量 () 在 C++11 中的引入,主要用于支持多线程程序中的共享数据的安全操作。通过类型,可以避免使用传统的锁机制来保证线程安全,从而提高程序的并发性和性能。它们的主要用途包括确保多线程环境中共享数据的正确访问,替代锁机制,和在一些低级同步算法中的应用。原创 2025-01-06 23:42:57 · 1196 阅读 · 0 评论 -
C++线程同步之条件变量
条件变量()是一种线程同步机制,用于在多线程程序中协调线程之间的执行顺序。它通过允许线程在某些条件成立时被唤醒,或者当某些条件不满足时进入等待状态,从而实现线程的协调和同步。与互斥锁(mutex)配合使用,条件变量允许线程在某个条件发生变化时继续执行。原创 2025-01-05 20:54:50 · 1055 阅读 · 0 评论 -
C++线程同步之互斥锁
std::mutex使用场景:保护共享资源,避免多个线程同时访问。注意点:避免手动加锁解锁带来的错误,推荐使用或。原创 2025-01-05 11:49:47 · 974 阅读 · 0 评论 -
std__invoke 的使用
总结是 C++17 引入的一个标准库函数,用于简化函数调用的语法。它允许你通过统一的接口调用普通函数、成员函数、函数对象或者 Lambda 表达式。这使得在处理不同类型的可调用对象时代码更加简洁和一致。原创 2025-01-02 22:24:58 · 554 阅读 · 0 评论 -
std optional 的使用
return 42;// 有值} else {// 没有值// 有值// 没有值// 解引用获取值} else {} else {return 0;在这个例子中,get_value函数根据参数的值来返回一个。如果返回值存在,就通过return 42返回一个有值的optional;如果返回值不存在,使用表示返回一个没有值的optional。是 C++17 中非常有用的工具,能够优雅地处理“可能无值”的情况。原创 2025-01-02 22:15:42 · 1503 阅读 · 0 评论 -
std__call_once 的使用
是 C++11 提供的一个线程安全的机制,能够确保某个函数在多个线程中只执行一次。它通常与一起使用,用于实现线程安全的初始化、单例模式和延迟初始化等。原创 2025-01-01 21:51:14 · 1058 阅读 · 0 评论 -
C++11 thread线程的使用
线程传递参数在 C++ 中,线程的使用通常依赖于标准库(C++11 及以后的版本)。C++11 引入了头文件,提供了丰富的线程操作功能,支持多线程编程。线程可以在 C++ 中以并行的方式运行不同的任务,提高程序的效率,尤其在多核 CPU 环境下。原创 2024-12-31 00:28:33 · 803 阅读 · 0 评论 -
weak_ptr 智能指针
是 C++11 标准引入的一个智能指针,用来管理共享资源,它与配合使用,能够避免 循环引用 和内存泄漏问题。是一个弱引用,它不会增加引用计数,从而不会阻止对象被销毁。原创 2024-12-21 23:14:13 · 1065 阅读 · 0 评论 -
unique_ptr 智能指针
是 C++ 标准库中的一部分,位于头文件中。它的“唯一性”(unique)意味着它是独占的,即一个资源(例如动态分配的内存)只能由一个unique_ptr管理。原创 2024-12-19 00:01:09 · 382 阅读 · 0 评论 -
shared_ptr 智能指针
如果申请的内存是普通类型,通过函数的()可完成地址的初始化,如果要创建一个类对象,函数的()内部需要指定构造对象需要的参数,也就是类构造函数的参数。std::shared_ptr 会通过引用计数来管理对象的生命周期,如果两个 shared_ptr 相互持有对方,形成循环引用,那么它们的引用计数永远不会减少,导致内存泄漏。std::make_shared 是创建 std::shared_ptr 的推荐方法,它同时分配 shared_ptr 和对象的内存,能够提高效率并减少内存分配次数。原创 2024-12-18 22:16:05 · 813 阅读 · 0 评论 -
转移和完美转发
另外,我们也可以给类编写相应的移动构造函数(T::T(T&& another))和和具有移动语义的赋值函数(T&& T::operator=(T&& rhs)),在构造对象和赋值的时候尽可能的进行资源的重复利用,因为它们都是接收一个右值引用参数。使用这个函数并不能移动任何东西,而是和移动构造函数一样都具有移动语义,将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存拷贝。是 C++11 引入的一个标准库函数,主要用于将一个对象标记为“可移动”的状态,从而允许资源的转移而不是复制。原创 2024-12-17 21:19:10 · 393 阅读 · 0 评论 -
C++ 右值引用
C++11 引入了右值引用 (T&&),允许你“窃取”右值的资源,右值引用就是对一个右值进行引用的类型。通过右值引用的声明,该右值又“重获新生”,其生命周期与右值引用类型变量的生命周期一样,只要该变量还活着,该右值临时量将会一直存活下去。在C++中在进行对象赋值操作的时候,很多情况下会发生对象之间的深拷贝,如果堆内存很大,这个拷贝的代价也就非常大,在某些情况下,如果想要避免对象的深拷贝,就可以使用右值引用进行性能的优化。右值是指临时的、不持久的值,它通常代表一个没有名字的值,或者是一个表达式的结果。原创 2024-12-16 22:32:31 · 806 阅读 · 0 评论 -
Lambda表达式
Lambda 表达式是一种匿名函数,可以在代码中直接定义并使用。它主要用于简化那些只需要简单操作的函数定义。原创 2024-12-15 21:28:53 · 570 阅读 · 0 评论 -
C++ function 可调用对象包装器、绑定器
是 C++ 标准库中的一个函数模板,用于将一个可调用对象(如函数、成员函数、函数对象等)与其参数绑定在一起,生成一个新的可调用对象。这个新的可调用对象可以在稍后的时间点被调用,而不需要再次提供原始参数。是 C++ 标准库中的一个类模板,用于存储、管理和调用任何可调用目标(如函数、lambda 表达式、绑定表达式、函数对象等)。在 C++ 中,可调用对象(Callable Object)是指可以像函数一样调用的对象。提供了一种统一的方式来处理各种可调用对象,使得代码更加灵活和通用。原创 2024-12-08 22:49:57 · 761 阅读 · 0 评论 -
Effective C++ 学习笔记二
C++ 并不禁止析构函数吐出异常,但他不鼓励你这么做,析构函数吐出异常就会非常危险 ,总会带来过早的结束程序,或者发生不明确的行为的风险。原创 2024-11-01 21:47:15 · 599 阅读 · 0 评论 -
Effective C++ 学习笔记一
无端的将所有的classes的析构函数声明为virtual,就像从未声明他们为virtual一样,都是错误的。定义一个语义约束指定一个不被改动的对象,编译器会强制实施这项措施,你可以在class外部修饰 gloabl或者namespace 作用域中的常量,或者修饰文件,函数,或者区作用域中被生命为static的对象。编译器可以暗自为class 创建默认的构造函数,copy构造函数,copy assignment操作符,以及析构函数。如果出现*两边 则表示被指物和指针两者都是常量。原创 2024-11-01 21:46:22 · 1121 阅读 · 0 评论 -
C++ 基础语法 一
最外层的循环控制变量声明成引用类型 ,这是为了避免数组被自动转换成指针 ,如果不用引用类型 编译器会初始化row 时会指向数组首元素的指针 这样便是得到int * ,显然内循环就不合法了,要使用范围for语句处理多维数组 除了最内层的循环外,其他的所有的循环变量都应该是引用类型。数组的两个特殊性质:不允许拷贝数组以及使用数组时会将其转换成指针,因为不能直接拷贝数组,所以不能使用值传递的方式使用数组参数,因为数组会被转换成指针,所以当我们为函数传递一个数组时,实际传递的是指向数组首元素的指针。原创 2024-11-01 21:43:45 · 631 阅读 · 0 评论 -
C++ 基础语法 二
一种特殊的成员函数,它会在每次删除所创建的对象时执行。析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。输出。原创 2024-11-01 21:41:55 · 855 阅读 · 0 评论 -
C++ shared_ptr 动态内存
为了更加容易的使用动态内存,新的标准库提供了智能指针,用来管理动态对象,智能指针的行为类似常规指针,重要的区别是他负责自动释放所指的对象。shared_ptr允许多个指针指向同一个对象,unique_ptr则独占所指的对象,weak_ptr是一种弱引用,指向shared_ptr 所管理的对象。原创 2024-11-01 21:40:25 · 387 阅读 · 0 评论 -
《Essential C++》学习笔记
Essential C++》这本书,是适合从C选手快速过度到C++选手的 一本书,下面是个人记录。原创 2024-11-01 21:30:25 · 942 阅读 · 0 评论 -
【C语言】中qsort使用详解
【C语言】中qsort使用详解qsort 函数是C语言的属于<stdlib.h>头文件的快速排序函数其主要形式为 :**void qsort(void * base,size_t num,size_t size, *int (*compare)(const void*,const void*);***参数的意义如下:*base :数组名num :数组长度siz...原创 2020-02-05 12:22:40 · 586 阅读 · 0 评论 -
STL之list函数解析
STL之list函数解析list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。使用list容器之前必须加上头文件:#include;list属于std命名域的内容,因此需要通过命名限定:using std::list;也可以直接使用全局的命名空间方式:using namespa...原创 2020-04-04 15:50:42 · 422 阅读 · 0 评论 -
STL之set常用函数
STL之set常用函数详解1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入...原创 2020-04-04 15:32:22 · 943 阅读 · 0 评论 -
STL之map与pair常用函数详解
STL之map与pair与unordered_map常用函数详解一、map的概述map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这...原创 2020-04-04 14:26:48 · 1067 阅读 · 1 评论 -
C++ pair 和make_pair的使用与区别
pair 的用法std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。C++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象。class pair可以将两个值视为一个单元。容器类别map和multimap就是使用pairs来管理其健值/实值(key/value)的成对元素。pair被定义为struct,因此可直接存取pair中的个别...原创 2020-04-03 22:16:09 · 6358 阅读 · 0 评论 -
C++ STL - queue常见函数使用解析
C++ STL - queue常见函数使用解析c++队列模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。一:定义queue(要有头文件#include < queue >) queue<int> q1; queue<double> q2;...原创 2020-04-03 17:45:24 · 334 阅读 · 0 评论 -
C++中的各种进制转换函数汇总
1.在C中,按指定进制格式输出如下:#include <iostream>#include <cstdio>using namespace std;int main(){ printf("%o\n",35); // 八进制格式输出:%o printf("%d...原创 2020-04-02 23:36:14 · 2891 阅读 · 1 评论 -
STL之sstream的用法
STL之sstream的用法说在前面:库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。注意,使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。使用时必须加上...原创 2020-04-02 17:15:55 · 676 阅读 · 0 评论 -
STL之stack的常见用法详解
stack的常见用法详解说在前面:stack翻译为栈,是STL中实现的一个后进先出的容器。要使用 stack,应先添加头文件include。stack的定义stack容器内元素的访问与常用函数实列解析stack常见用途 stack的定义其定义的写法和其他STL容器相同, typename可以任意基本数据类型或容器:stack<typename>...原创 2020-04-02 14:03:42 · 373 阅读 · 0 评论 -
STL之vector常用函数笔记
STL之vector常用函数笔记今天忙碌了一天,终于把自己hexo+GitHub个人博客搭建成功了,超开心,作为计算机的专业人员,有一个个人博客还是比较重要的。下面是我个人博客的样板,还没有完全配置个人的主题。这里提供一个传送门:Yqifei学会一些常用的vector就足够去刷acm的题了ps:for(auto x:b) cout<<x<<" ";是基于范围的...原创 2020-03-31 21:15:10 · 456 阅读 · 0 评论 -
STL之string常用库函数笔记
今天总结一下string中的库函数STL之string常用库函数笔记 string的构造函数形式 string的大小和容量 string的字符串比较 string的插入 string的拼接 string的遍历 string的删除 string的字符替换 string大小写转换 string的查找 string的排序 string的分割1.string的构造函数形式...原创 2020-03-30 10:58:56 · 444 阅读 · 0 评论 -
c++全排列---递归与next_permutation函数
今天,在《算法笔记》里面看了全排列!字节就总结一下,方便以后复习使用;全排列的递归写法;这里插入一个视频,看了视频就好理解了。 [算法教程] 全排列 (ps:我个人觉得他的写法有问题,但是他的思想是与下面递归代码符合)#include <iostream&...原创 2020-03-19 19:19:40 · 381 阅读 · 0 评论 -
C++之acm多组输入总结
C++之acm多组输入总结ACM竞赛题目的输入数据常要求有多组,并且格式多种多样,这是初次登OJ平台的同学的一个障碍。实际上,这些格式可以归为固定的几种类型,本文介绍各种类型的处理方法,以帮助同学们克服这些障碍。--------------------------------------由于小飞之前对c的输入有了较为详细的了解,所以关于c的就直接上链接了:C语言之acm输入汇总;...原创 2020-02-20 14:17:34 · 3162 阅读 · 0 评论 -
C++学习笔记(供学过C使用最好)
矢量的相遇原创 2020-02-11 10:59:33 · 670 阅读 · 0 评论 -
C++中的矢量——【vector】
C++中的矢量——【vector】1.初遇矢量c++标准模板库(Standard Template Library,STL)包含一个矢量的数据类型,在STL中定义的数据类型,通常称之为容器,STL中z有两个容器:顺序容器和关联容器。 vector数据类型是一个序列容器,他很像一个一维数组;其表现如下: 矢量包含一系列值和元素; 矢量将元素储存在连续的内存中; 可...原创 2020-02-10 20:43:05 · 3337 阅读 · 0 评论 -
C++ STL中的Binary search(二分查找)
C++ STL中的Binary search(二分查找)二分查找适合有一定序列的数列头文件: #include<algorithm>使用方法:a. 函数模板: binnary_search(arr[],arr[]+size,indx)b. 参数说明:arr[] :数组首地址size:数组元素的个数indx:需要查找的值c:函数功能:在数组中以二分法检...原创 2020-02-05 16:03:36 · 927 阅读 · 0 评论 -
C++ 中的sort排序用法
C++ 中的sort排序用法C中的qsort()采用的是快排算法,C++的sort()则是改进的快排算法。两者的时间复杂度都是n*(logn),但是实际应用中,sort()一般要快些,建议使用sort()。STL中就自带了排序函数sort对给定区间所有元素进行排序 要使用此函数只需用#include sort即可使用,语法描述为:sort(begin,end),表示一个范围,用法示例:...原创 2020-02-05 13:51:44 · 1620 阅读 · 0 评论