C++学习笔记
文章平均质量分 93
C++学习笔记
Mount256
这个作者很懒,什么都没留下…
展开
-
C++并发与多线程(5)——call_once和条件变量condition_varible
C++并发与多线程(5)——call_once和条件变量condition_varible一、call_once二、条件变量std::condition_varible1.wait()2.notify_one()3.完整例程和一些思考一、call_once在多线程的环境下,有些时候我们不需要某给函数被调用多次或者某些变量被初始化多次,它们仅仅只需要被调用一次或者初始化一次即可。为了解决上述多线程中出现的资源竞争导致的数据不一致问题,我们大多数的处理方法就是使用互斥锁来处理。在C++11中提供了最新的处原创 2021-02-25 22:00:27 · 553 阅读 · 0 评论 -
C++并发与多线程(4)——unique_lock详解
C++并发与多线程(4)——unique_lock详解一、unique_lock取代lock_guard二、unique_lock的第二个参数1.std::adopt_lock2.std::try_to_lock3.std::defer_lock二、unique_lock的成员函数1.lock()和unlock()2.try_lock()3.release()四、unique_lock所有权的传递1.使用移动语义std::move2.返回临时对象mutex一、unique_lock取代lock_guard原创 2021-02-20 23:46:13 · 1661 阅读 · 0 评论 -
C++并发与多线程(3)——互斥量与死锁
零、引子1.创建多线程在前几次学习中,我们都是创建一个子线程,其实多个子线程是比较常见的。一般在创建多个线程时,把thread对象放入到容器中管理,看起来像个thread对象的数组,对一次创建大量的线程并对大量线程进行管理有好处。下面是一个例子:#include <iostream>#include <thread>#include <vector>using namespace std;void get_id(int i){ cout <<原创 2021-02-19 23:52:49 · 334 阅读 · 0 评论 -
C++并发与多线程(2)——线程传参问题
C++并发与多线程(2)——线程传参问题零、复习隐式转换和显式转换的概念一、获得线程id二、传递参数问题1.值引用2.传引用3.传指针时需要注意的点零、复习隐式转换和显式转换的概念隐式转换(系统根据程序的需要而自动转换的):void fun(CTest test); class CTest { public: CTest(int m = 0); } fun(20);//隐式转换,这里的20生成了一个临时对象显式转换(需要加括号标注想要转换的类型):void fun原创 2021-02-18 09:50:02 · 406 阅读 · 1 评论 -
C++并发与多线程(1)——创建线程
C++并发与多线程(1)——创建线程零、注意事项一、创建线程的一般方法二、判断线程是否可以join或detach三、创建线程的其他方法1.类创建线程2.lambda(匿名函数)表达式创建线程零、注意事项程序运行起来,生成一个进程,该进程所属的主线程开始自动运行;当主线程从main()函数返回,则整个进程执行完毕。主线程从main()开始执行,那么我们自己创建的线程,也需要从一个函数开始运行,一旦这个函数运行完毕,线程也结束运行。整个进程是否执行完毕的标志是:主线程是否执行完,如果主线程执行完毕了,原创 2021-02-08 14:47:32 · 828 阅读 · 0 评论 -
C++学习笔记(7)——标准模板库STL之set和map
文章目录零、pair类模板一、multiset和set二、multimap和map零、pair类模板pair与python中字典的键值对非常像。在C++中,pair的定义是:template <typename T1, typename T2>struct pair{ T1 first; T2 second; ...下面都是各种构造函数重载版本,不写了可以不写参数:pair<string, double> p可以写参数(常用):pair<string, do原创 2020-08-06 21:02:21 · 279 阅读 · 0 评论 -
C++学习笔记(6)——标准模板库STL之vector和list
文章目录一、动态数组vector二、双向链表list一、动态数组vector二、双向链表list原创 2020-08-05 17:52:20 · 188 阅读 · 0 评论 -
C++学习笔记(5)——标准模板库STL之概述
文章目录一、容器1.容器的分类2.容器对象的定义方法3.容器的成员函数4.容器对象的比较二、迭代器1.迭代器的定义方法2.迭代器的功能分类3、迭代器的辅助函数三、算法STL指的是C++的标准模板库(Standard Template Library,STL),本篇将介绍STL的基本概念。前排提示:这部分内容很像python中的一些概念,比如列表、元组、字典、迭代器等等,它们的用法与接下来要讲的都是类似的一、容器容器是用于存放数据的类模板。我们在使用容器类模板时,要将它实例化,指明容器中存放的元素是什么原创 2020-07-28 12:33:42 · 178 阅读 · 0 评论 -
C++学习笔记(4)——模板
文章目录一、函数模板一、函数模板函数模板格式(其中class可以替换为typename):template <class 类型参数1, class 类型参数2, ...>返回值类型 模板名(参数名){ 函数体;}例如:#include<iostream>using namespace std;template <typename T> //typename可以替换为classvoid cswap(T &x, T &y) //交换原创 2020-07-26 11:40:02 · 158 阅读 · 0 评论 -
C++学习笔记(3)——多态与虚函数
文章目录一、多态的概念一、多态的概念“多态”指的是同一名字的事物可以完成不同的功能。多态可以分为两种:编译时的多态:即函数、运算符的重载、对重载函数的调用,在编译时就能根据实参确定应该调用哪个函数运行时的多态:与继承、虚函数有关虚函数,就是在声明前加了virtual关键字的成员函数。静态成员函数不能是虚函数。包含虚函数的类称为“多态”。下面是一个程序例子:#include<iostream>using namespace std;class A{ public: //一定原创 2020-07-23 17:07:25 · 275 阅读 · 0 评论 -
C++学习笔记(2)——继承与派生
文章目录一、继承一、继承原创 2020-07-21 11:44:48 · 250 阅读 · 0 评论 -
C++学习笔记(1)——类和对象
考试月这一个月的时间没怎么碰过C++了,再加上本人对这部分内容不太熟悉,说实话挺生疏的,而且协会也要求写学习笔记啊啊啊啊啊啊啊 ,所以这个星期先复习了一下面向对象基础。文章目录零、C++的指针一、构造函数&析构函数二、封闭类三、友元零、C++的指针动态内存分配实例://分配出sizeof(int)大小的空间int *p;p = new int;*p = 5;//分配出10*sizeof(int)大小的空间int *q;q = new int[10];q[4] = 5;原创 2020-07-19 13:15:28 · 200 阅读 · 0 评论