C++
文章平均质量分 68
moomhxy
你若是天才,我便是疯子
展开
-
C++11多线程之condition_variable(条件变量)
头文件#include <condition_variable>概述condition_variable 类是同步原语,能用于阻塞一个线程,或同时阻塞多个线程,直至另一线程修改共享变量(条件)并通知 condition_variable 。其不可复制赋值。构造函数// 1.构造 condition_variable 类型对象。condition_variable();//2.复制构造函数被删除。condition_variable(const condition_variab原创 2020-11-07 23:43:29 · 735 阅读 · 0 评论 -
C++11多线程之unique_lock
概述类 unique_lock 是通用互斥包装器,允许延迟锁定、锁定的有时限尝试、递归锁定、所有权转移和与条件变量一同使用。类 unique_lock 可移动,但不可复制。构造// 构造无关联互斥的 unique_lock unique_lock() noexcept;//移动构造函数。以 other 的内容初始化 unique_lock 。令 other 无关联互斥。unique_lock( unique_lock&& other ) noexcept;//通过调用 m原创 2020-11-02 22:09:16 · 1092 阅读 · 1 评论 -
C++11多线程之mutex
概述mutex 类是能用于保护共享数据免受从多个线程同时访问的同步原语。调用方线程从它成功调用 lock 或 try_lock 开始,到它调用 unlock 为止占有 mutex 。线程占有 mutex 时,所有其他线程若试图要求 mutex 的所有权,则将阻塞(对于 lock 的调用)或收到 false 返回值(对于 try_lock )。调用方线程在调用 lock 或 try_lock 前必须不占有 mutex 。mutex 既不可复制亦不可移动。构造//构造互斥。调用后互斥在未锁定状原创 2020-11-02 22:08:44 · 568 阅读 · 0 评论 -
C++11多线程之thread
头文件需要添加头文件#include<thread>构造//构造不表示线程的新 thread 对象。thread() noexcept; //移动构造函数。构造表示曾为 other 所表示的执行线程的 thread 对象。此调用后 other 不再表示执行线程。thread(thread&& other) noexcept; // 复制构造函数被删除; thread 不可复制。没有二个 std::thread 对象可表示同一执行线程。thread( con原创 2020-11-02 22:08:01 · 935 阅读 · 0 评论 -
C++智能指针
引言在C++中,动态内存的管理是由new/delete运算符完成的,new:在动态内存中为对象分配一块空间并返回一个指向该对象的指针。delete:指向一个动态独享的指针,销毁对象,并释放与之关联的内存。但是经常会出现以下两种问题:一是忘记释放内存,会造成内存泄露;二是尚有指针引用内存的情况下释放了它,就会产生引用非法内存的指针。为了更加安全的使用动态内存,引入了智能指针的概念。一:auto_ptrauto_ptr是C++标准库中的智能指针模板类,头文件auto_ptr的出现,主要是为了解决“有原创 2020-10-29 22:38:36 · 140 阅读 · 0 评论 -
C++STL - set详解
set有很多用法与map相差不大,之前写了一篇map的介绍打开链接,所以这次就大概讲解一下:map通过实值来排序,通过实值来查找,即键值即实值,而且同样不能重复。构造:set<string> s;常用函数成员函数 (构造函数) 构造 set (公开成员函数) (析构函数) 析构 set (公开成员函...原创 2018-12-11 14:15:42 · 541 阅读 · 0 评论 -
C++STL - map详解
目录 定义 声明插入元素输出容量查询删除查找默认排序常用函数定义std::map 是有序键值对容器,它的元素的键是唯一的。用比较函数 Compare 排序键。搜索、移除和插入操作拥有对数复杂度。 map 通常实现为红黑树,其属于关联容器,特点:高效查找(log2(N)),键值不能重复关联容器类似于C++中的无序关联容器。差别为:关联容器是红黑...原创 2018-12-11 13:58:26 · 355 阅读 · 0 评论 -
C++个人学习笔记五(继承和派生)
目录 继承继承关系 和 复合关系派生类覆盖基类成员派生类的构造函数直接基类与间接基类继承继承:在定义一个新的类B时,如果该类与某 个已有的类A相似(指的是B拥有A的全部特点), 那么就可以把A作为一个基类,而把B作为基 类的一个派生类(也称子类)。派生类是通过对基类进行修改和扩充得到 的。在派生类中,可以扩充新的成员变量 和成员函数。 派生类一经定义后,可以...原创 2018-12-19 20:22:44 · 288 阅读 · 0 评论 -
C++个人学习笔记四(运算符重载)
目录 运算符重载赋值运算符 的重载运算符重载 为友元函数类型转换运算符和 自增、自减运算符 的重载运算符重载C++预定义的运算符,只能用于基本数据类型 的运算:整型、实型、字符型、逻辑型 .......+、-、*、/、%、^、&、~、!、|、=、<< >>、!=、……不能重载的运算符. :: .* ...原创 2018-12-12 16:24:01 · 266 阅读 · 0 评论 -
C++个人学习笔记三(this指针,静态成员,成员对象和封闭类,友元,常量成员函数)
this指针其作用就是指向成员函数所作用 的对象非静态成员函数中可以直接使用this来代表指向该函数 作用的对象的指针。class Complex {public:double real, imag;void Print() { cout << real << "," << imag ; }Complex(double r,double i...原创 2018-12-07 20:02:06 · 1108 阅读 · 0 评论 -
C++个人学习笔记一(引用,const用法,动态内存分配,内联函数,函数重载,函数的缺省参数)
引用下面的写法定义了一个引用,并将其初始化为引用某个变量。类型名 & 引用名 = 某变量名;int n = 4;int & r = n; // r引用了 n, r的类型是int &某个变量的引用,等价于这个变量,相当于该变量的一个别名。下面是一个引用的例子int n = 4;int & r = n;r = 4;cout <&...原创 2018-12-01 23:32:56 · 329 阅读 · 0 评论 -
C++ STL - queue使用详解
c++队列模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。下面详细介绍queue的使用:一:定义queue(要有头文件#include <queue>)queue<int> q1;queue<double> q2;...原创 2018-08-13 15:19:31 · 8704 阅读 · 1 评论 -
C++ STL-stack使用详解
stack 类是容器适配器,它给予程序员栈的功能——特别是 FILO (先进后出)数据结构。该类模板表现为底层容器的包装器——只提供特定函数集合。栈从被称作栈顶的容器尾部推弹元素。一:头文件#include<stack>二:定义stackstack<int> s;创建一个空的 stack 对象。stack<int, list<int...原创 2018-08-13 15:40:50 · 572 阅读 · 0 评论 -
C++ STL - vector使用详解
vector是C++的一个模板类,是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。构造函数:vector() //创建一个空vectorvector(int nSize) //创建一个vector,元素个数为nSizevec...原创 2018-08-08 22:01:04 · 238 阅读 · 0 评论 -
c++ STL - priority_queue优先队列详解
简述普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现,其在插入数据会自动排序。头文件#include<queue>声明priority_queue<T, C...原创 2018-08-18 22:50:11 · 485 阅读 · 0 评论 -
51nod1117 聪明的木匠【贪心+优先队列】
一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 <= L1,L2,…,LN <= 1000,且均为整数)个长度单位。我们认为切割时仅在整数点处切且没有木材损失。木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种...原创 2018-09-12 16:55:10 · 202 阅读 · 0 评论 -
C++ STL-List函数用法整理
定义: list 是C++标准程式库中的一个类,可以简单视之为双向连结串列,以线性列的方式管理物件集合。list 的特色是在集合的任何位置增加或删除元素都很快,但是不支持随机存取。list 是C++标准程式库提供的众多容器(container)之一,除此之外还有vector、set、map、…等等。list 以模板方式实现(即泛型),可以处理任意型别的变数,包括使用者自定义的资料型态...原创 2018-11-11 16:08:30 · 8345 阅读 · 0 评论 -
C++ STL-deque使用详解
定义std::deque ( double-ended queue ,双端队列)是有下标顺序容器,它允许在其首尾两段快速插入及删除。另外,在 deque 任一端插入或删除不会非法化指向其余元素的指针或引用。与 std::vector 相反, deque 的元素不是相接存储的:典型实现用单独分配的固定大小数组的序列,外加额外的登记,这表示下标访问必须进行二次指针解引用,与之相比 vector...原创 2018-11-18 17:00:50 · 1259 阅读 · 0 评论 -
C++个人学习易错点笔记
1 int n = 8;int & r1 = n;const int r2 = r1;只能引用变量,不能引用返回值不是变量的表达式。不能对常引用进行赋值不能用常引用对非常引用进行初始化2 int a = 1,b = 2; int & r = a; r = b; r = 7; cout << a << en...原创 2018-11-27 22:56:23 · 809 阅读 · 0 评论 -
C++个人学习笔记二(类成员访问,成员函数重载,构造函数,复制构造函数,析构函数)
类成员的 可访问范围 在类的定义中,用下列访问范围关键字来说明类成员 可被访问的范围:– private: 私有成员,只能在成员函数内访问– public : 公有成员,可以在任何地方访问– protected: 保护成员以上三种关键字出现的次数和先后次序都没有限制。定义一个类:class className {private:私有属性和函数public:...原创 2018-12-03 09:50:47 · 888 阅读 · 0 评论 -
sort函数用法详解
用于C++中,对给定区间所有元素进行排序。头文件是#include <algorithm>sort函数进行快速排序,时间复杂度为n*log2n,比冒泡之类的要省时不少Sort函数使用模板:Sort(start,end,排序方法)1.第一个参数是要排序数组的起始地址2.第二个参数是数组结束地址的下一位3.第三个是排序的方法,可不填,默认升序一般是直接对数组进行...原创 2018-07-20 11:34:14 · 26472 阅读 · 0 评论