
C/C++
文章平均质量分 94
c/c++语法学习
云端FFF
not because they are easy, but because they are hard
展开
-
【C++/STL】8. pair
pair是STL中有用的一个“小玩意”,它将两个任意数据类型的变量绑定在一起。可以把pair看作一个内部有两个元素的结构体,也可以把它看做map映射中的一项pair支持任意基本数据类型和STL容器pair定义于utility.h,命名空间stdmap.h中包含了utility.h,所以如果包只含map.h也可以用pair一、构造函数作用代码说明定义一个pair...原创 2020-02-11 00:26:01 · 157 阅读 · 0 评论 -
【C++/STL】7. stack栈
stack是STL中的一种后进先出容器可以自己实现一个栈:数据结构(4)栈和队列->栈STL中的stack支持任意基本数量类型和STL容器stack定义于stack.h,命名空间std一、构造函数作用代码说明定义一个stackstack<typename> st;typename可以是任意基础数据类型或STL容器二、访问queue内...原创 2020-02-10 21:39:21 · 163 阅读 · 0 评论 -
【C++/STL】6. priority_queue优先队列
优先队列底层是靠堆实现的,是一种特殊的队列。优先队列的队首元素一定是当前队列中优先级最高的那个,也就是说,如果把优先队列中元素依次出队,会得到按优先级从大到小排列的一组元素向优先队列中插入元素时,优先队列内部的堆结构会自动调整,保证队首元素永远是优先级最高的。priority_queue定义于queue.h,命名空间std一、构造函数作用代码说明定义一个pri...原创 2020-02-10 03:34:06 · 201 阅读 · 0 评论 -
【C++/STL】5. queue队列
queue队列是一种先进先出(FIFO)容器queue支持任意基本数据类型和STL容器queue定义于queue.h,命名空间std一、构造函数作用代码说明定义一个queuemap<typename1,typename2> mp;前一个是键的类型,后一个是值的类型二、访问queue内元素由于队列本身是一个先进先出的限制性结构,因此STL...原创 2020-02-09 16:04:29 · 193 阅读 · 0 评论 -
【C++/STL】4. map映射
数组是一种映射关系,int型数组把int映射到int,double型数组把double映射到double。用map可以构建任意类型到任意类型的数组,包括任意基本类型和STL容器考虑这个情境:要在某个文件中判断一些给定的数字是否出现过,按正常思路,可以开一个bool型数组bool hashTable[max_size]来记录对应数字出现与否,但如果数字特别大(如有几千位),这个数组就会开不了。这...原创 2020-02-09 15:22:35 · 545 阅读 · 0 评论 -
【C++/STL】3. set集合
set是一个内部有序且不含重复元素的容器适用于各种数据类型集合需要去重的情况元素加入set后会自动排序set定义于 set.h,命名空间std一、构造函数作用代码说明定义一个setset <typename> name;typename可以是任何基本类型,如int/double/char/结构体...或STL标准容器vector/set/que...原创 2020-02-09 05:03:48 · 1469 阅读 · 0 评论 -
【C++/STL】2. vector向量
vector与常用的数组类似,占用连续内存空间,对随机存取支持很好。可以类似数组用下标访问,也可以类似字符串用vector.at()成员函数访问vector是尾部开口设计,类似栈。从尾部插入数据效率最高(push_back()函数)vector可以自动实现动态空间申请和释放,使用简便vector定义于 vector.h,命名空间std文章目录一、构造函数二、vector元素操作1、静...原创 2019-10-21 00:21:38 · 290 阅读 · 0 评论 -
【C++/STL】1. string类
简单总结string类相关内容string类本身不属于STL库,但是用法上有诸多相似之处,所以也放在STL分类里总结了文章目录一、构造函数二、string类的常见操作(1)对象操作(2)string类函数(3)更多详细介绍三、string和char的转换一、构造函数生成一个空字符串s :string s;string str1;初始化为显式字符串:string s(“va...原创 2019-09-15 03:51:09 · 216 阅读 · 0 评论 -
【C++/STL】0.容器概述
一、容器分类(1)序列性容器序列式容器:按线性排列来存储某类型值的集合,每个元素都有自己特定的位置。顺序容器主要有vector、deque、listvector:就是动态数据。它是在堆中分配内存,元素连续存放,有保留内存吗,如果减少大小后内存也不会释放。当请求空间超出现有空间时,会申请等同于当前自身空间大小的新空间...原创 2019-10-22 00:47:25 · 156 阅读 · 0 评论 -
C++ 多线程学习笔记(6):读者-写者问题模拟
文章目录一、介绍说明二、使用的语法现象三、代码四、遇到的问题一、介绍说明语言:C++11题目:读者-写者问题模拟背景:2个读者5个写者,操作一个共享的数据区(用一个string字符串代表)写者和其他写者、读者是互斥的读者和其他写者是互斥的,和其他读者是不互斥的编程思路做一个临界资源类,包含读者写者共同共享数据区,和对这个数据的读写操作利用C++11提供的 mutex 类,用 “使用成员函数指针作为线程函数” 的方法建立多个读者写者线程为了自动生成读者的数据,给每个写者一个私有原创 2020-06-16 13:49:59 · 2915 阅读 · 0 评论 -
C++ 多线程学习笔记(5):互斥量概念和用法、死锁演示及解决
文章目录1. 互斥锁(mutex)基本概念2. 互斥量的用法(1)lock(),unlock()(2)用lock和unlock改写上一节最后的代码(3)std::lock_guard类模板3. 死锁(1)死锁演示(2)死锁的一般解决方案(3)`std::lock()`函数模板(4)`std::lock_guard`的`std::adopt_lock`函数4. 效率问题1. 互斥锁(mutex)基本概念保护共享数据操作时,某个线程用代码把共享数据锁住,自己操作数据其他线程只能等这个线程处理完,解原创 2020-06-16 13:42:15 · 829 阅读 · 0 评论 -
C++ 多线程学习笔记(4):多个线程数据共享问题分析
1. 创建和等待多个线程示例代码 #include <iostream> #include <thread> #include <vector> using namespace std; //子线程起始函数 void myprint(int inum) { cout << inum << "号线程开始执行" << endl; cout << inum << "号原创 2020-06-16 13:29:01 · 1258 阅读 · 0 评论 -
C++ 多线程学习笔记(3):线程传参的进一步分析
根据前一篇文章的分析:C++ 多线程学习笔记(2):线程启动、结束、创建线程方法:C++多线程中使用detach可能导致问题。假设在构造子线程时,传入参数引用了主线程的变量,而且子线程创建后调用detach() 了,如果主线程先执行完,这个被引用的变量就会被回收,而此时子线程(没执行完)仍在引用这块内存空间,会导致不可预料的结果这里针对这个问题进行进一步分析文章目录1. 传递临时对象作为线程参数(1)要避免的陷阱(2)总结2. 临时对象作为线程参数(续)(1)线程id概念(2)临时对象构造时间抓.原创 2020-06-16 13:22:54 · 419 阅读 · 0 评论 -
C++ 多线程学习笔记(2):线程启动、结束、创建线程方法
文章目录一、线程启动、结束、创建线程方法1. 创建线程的一般方法(1)thread()一、线程启动、结束、创建线程方法1. 创建线程的一般方法主线程在从main开始执行,一旦主线程从main()返回,则整个程序(进程)结束此时如果其他子线程还没执行完,一般会被操作系统强行终止通常我们创建的子线程从一个函数开始运行,一旦此函数运行完毕,代表这个线程运行结束如果想保持子线程一直运...原创 2020-05-07 19:35:27 · 27398 阅读 · 2 评论 -
C++ 多线程学习笔记(1)基础概念:并发、进程、线程
一、并发、进程、线程1. 并发、进程的基本概念和综述(1)并发什么是并发两个或者更多的任务(独立的活动)同时发生(执行)上下文切换定义:过去的计算机,只有一个CPU,同一时刻只能执行一个任务,并发的实现要靠操作系统调查CPU,每秒中进行多次 “任务切换”,这就是上下文切换进行上下文切换是有时间开销的(切换时涉及保存环境信息和恢复环境信息)利用上下文切换,可以实现一种并发的...原创 2020-05-07 18:51:33 · 412 阅读 · 0 评论 -
从C到C++(2)-- 类和对象基础
很久以前学过C++,但是后来做嵌入式一直用C,面向对象什么的都快忘光了,写一些东西权当复习C++了一、类和对象相关概念(1)面向过程的程序设计面向过程的程序 = 算法+数据结构程序由全局变量和函数构成,用函数操作数据结构不足:函数和其操作的数据结构没有直观的联系,程序长了之后,难以直接看出某个数据结构有哪些函数可以对它操作操作某个函数到底是操作哪些数据结构的任意两个函数间...原创 2019-09-05 01:43:35 · 242 阅读 · 0 评论 -
从C到C++(1)-- C和C++的几处不同
很久以前学过C++,但是后来做嵌入式一直用C,面向对象什么的都快忘光了,写一些东西权当复习C++了文章目录一、引用1、普通引用2、常引用二、再看const三、动态内存分配四、内联函数、重载函数、函数缺省值1、内联函数2、重载函数3、函数缺省值一、引用1、普通引用简介(1)设置一个变量的引用,相当于给这个变量起一个别名,变量的引用等价于这个变量(修改一个,另一个也变化)(2)变量类型...原创 2019-07-23 04:13:42 · 224 阅读 · 0 评论 -
C/C++中拆分long/float/double等数据并重新组合的方法
在嵌入式编程时,常常会遇到需要做数据通信的场景。单片机往往只支持一次8位的数据传递,为了传输较长的数据类型,只能先在主机将数据拆分,再在从机重新组合,这里介绍一些实用的数据拆分组合方法一、数据类型分析1、类型长度C/C++中有多种数据类型,但不管什么类型的数据都是以二进制形式存储的,在不同的系统和编译器中,各种类型转换为二进制后的长度有时会不一样,可以利用sizeof函数来查看你的环境中数...原创 2019-05-26 00:35:58 · 3875 阅读 · 0 评论 -
C语言位运算应用实例
这里写自定义目录标题C语言位运算应用实例一、位操作规则1、与运算 (&amp;amp;)2、或运算 (|)C语言位运算应用实例正在准备2019年RM比赛,遇到这样一个场景:Tx2图像采集之后要把目标位置传给stm32控制板,位置信息有x/y这一属性,准备用串口做数据传输。传输数据范围是[0,560]且为整数,但是查了一下发现stm32的串口一次最多读8位数据,也就是[0,255],没有办法,只能把数...原创 2018-09-21 04:22:20 · 5942 阅读 · 0 评论 -
[转]C++中输入字符串的几种方法
C++中输入字符串的几种方法转自http://gwyan.blog.163.com/blog/static/213337092201361734257744/转载 2018-08-07 02:25:08 · 545 阅读 · 0 评论