随笔分类 -  C++

摘要:需求 任务队列中可以依次添加任务; 任务执行函数需要接受外部传输的参数; 主动调用Start开始执行任务; 代码实现 class TaskQueue { private: std::mutex mtx; std::condition_variable cv; std::queue<std::func 阅读全文
posted @ 2023-10-31 15:24 醉曦 阅读(923) 评论(0) 推荐(0) 编辑
摘要:程序中栈的基础知识 栈是向下生长的 向下生长指的是从内存的高地址-->低地址的方向拓展。 栈有栈底和栈顶,从上面可以知道栈顶的地址是比栈底的要低的。 对于X86体系的CPU而言,大概需要知道以下基础知识: ebp寄存器:一般叫做基址指针或者帧指针; esp寄存器:一般叫做栈指针 ebp在没有改变之前 阅读全文
posted @ 2020-09-13 22:26 醉曦 阅读(1401) 评论(0) 推荐(0) 编辑
摘要:何为set set是STL中的一种关联容器,里面的元素根据关键字存储。set的元素都是唯一的,没有重复元素,我们可以利用这个特点进行去重的操作; set中常用的方法 函数名 作用 clear 清除内容 insert 插入元素或节点 emplace 原位构造元素 erase 移除元素 swap 交换内 阅读全文
posted @ 2020-06-30 19:53 醉曦 阅读(1258) 评论(0) 推荐(0) 编辑
摘要:unordered_map的使用 unordered_map是类似于map的关联容器,其中存储的是键值对pair。哈希表的搜索、插入和元素移除拥有平均常数时间复杂度,元素在内部的存储是没有顺序的,而是通过键的哈希来确定元素具体放在具体的某个位置。 unordered_map的常用函数 函数名 函数作 阅读全文
posted @ 2020-06-27 20:26 醉曦 阅读(3854) 评论(0) 推荐(0) 编辑
摘要:pair的数据定义 在C++ pair的参考网站的介绍如下所示 > stdpair is a class template that provides a way to store two heterogeneous objects as a single unit. A pair is a spe 阅读全文
posted @ 2020-06-14 22:21 醉曦 阅读(708) 评论(0) 推荐(0) 编辑
摘要:定义 是通过 指针占有并管理另一对象 , 并在 离开作用域时 释放该对象的智能指针。 释放对象的时机 : 1. 销毁了管理的 unique_ptr 对象 2. 通过 operator= 或 reset() 赋值另一指针给管理的 unique_ptr 对象 也可以通过调用 get_deleter()( 阅读全文
posted @ 2020-05-22 00:23 醉曦 阅读(708) 评论(0) 推荐(1) 编辑
摘要:引用作为函数参数 很多函数中的参数都是 的方式,这样函数会创建一个临时对象用来保存数据,占用内存开销;而引用不会,并且在特定情况下又是必须的选择; : 使用引用作为参数的作用: 函数里的形参相当于主调函数里参数的一个别名,操作的对象其实是同一个; 引用参数在内存中没有副本,是直接对实参进行操作的; 阅读全文
posted @ 2020-04-29 00:11 醉曦 阅读(166) 评论(0) 推荐(0) 编辑
摘要:引用作为函数参数 很多函数中的参数都是 的方式,这样函数会创建一个临时对象用来保存数据,占用内存开销;而引用不会,并且在特定情况下又是必须的选择; : 使用引用作为参数的作用: 函数里的形参相当于主调函数里参数的一个别名,操作的对象其实是同一个; 引用参数在内存中没有副本,是直接对实参进行操作的; 阅读全文
posted @ 2020-04-24 14:04 醉曦 阅读(118) 评论(0) 推荐(0) 编辑
摘要:委托构造函数(Delegate constructor) C++11引入了 的概念,用于在一个类中让一个 构造函数使用另外一个构造函数 ,从而用来简化初始化的代码 .下面定义基类 ,里面含有两个变量并且含有两个构造函数,其中带参数的构造函数会调用不带参的构造函数,完整示例代码如下所示: 构造函数的继 阅读全文
posted @ 2020-03-29 15:09 醉曦 阅读(235) 评论(0) 推荐(0) 编辑
摘要:函数模板 我们可以把函数模板当做一种特殊的函数,里面的 参数类型可以是任意类型 ,这样的话我们就可以减少重复定义,从而让这个函数模板自动适应不同的参数类型,也就是说函数可以适应多种类型的参数,例如 、`int`或者类什么的。 C++为了实现上面的功能,引入了 这个概念。我们可以把template当成 阅读全文
posted @ 2020-03-19 00:34 醉曦 阅读(3465) 评论(0) 推荐(2) 编辑
摘要:引言 C++在很早就有了常量表达式的概念,例如 ,常量表达式是指 值不会改变并且在编译过程中就可以得到结果的表达式 。如果常量表达式可以直接优化并且在程序编译阶段的时候就写入程序中,将会提高程序的性能。下面就用一个简单的数组例子来说明 在上面的例子中, 仍然是非法定义的,这是因为len_2是 ,而不 阅读全文
posted @ 2020-03-11 23:27 醉曦 阅读(171) 评论(0) 推荐(0) 编辑
摘要:引言 的目的看起来是为了代替 ,因为在以前,C++总是把 和`0 NULL 0`,有的是当成 。 在C++里面,二级指针( )是不允许将 隐式转换为其他类型的。但是如果编译器中将 定义为 ,那么下面的代码是可以成立的 char ch = NULL; // no error 在上面的代码中,不允许 隐 阅读全文
posted @ 2020-03-10 21:14 醉曦 阅读(231) 评论(0) 推荐(0) 编辑
摘要:定义 多字节字符:多个字节表示一个字符,每个国家不一样,没有统一编码方案; 宽字符:Unicode编码方案,4个字节表示一个字符; C++中, 表示多字节字符串, 表示宽字符串 上面两个字符串没法使用强制类型转换 两者的相互转换 使用C标准库函数 和`wcstombs` 上面两个函数转换过程中受 系 阅读全文
posted @ 2020-03-05 19:49 醉曦 阅读(596) 评论(0) 推荐(0) 编辑
摘要:string中常见的成员函数 示例代码: string s= string("abcdefg"); char ch[] = "abcdefgd"; //调用构造函数全部复制 string str1 = string(s); //构造函数,从字符串str的第2个元素开始,复制5个元素,赋值给str2 阅读全文
posted @ 2019-03-12 00:28 醉曦 阅读(3125) 评论(0) 推荐(2) 编辑
摘要:stack中常见方法 1. top():返回一个栈顶元素的引用,类型为 T&。如果栈为空,返回值未定义。 2. push(const T& obj):可以将对象副本压入栈顶。这是通过调用底层容器的 push_back() 函数完成的。 3. push(T&& obj):以移动对象的方式将对象压入栈顶 阅读全文
posted @ 2019-03-12 00:15 醉曦 阅读(5434) 评论(0) 推荐(1) 编辑
摘要:直角三角形(靠右直立) 示例实现代码如下: int main(){ int n; int i,j; cin n; if(n n; if(n n; if(n= 1; i ){ //打印空格 for(j = 1; j n; if(n n; if(n= 1; i ){ for(j = 1; j n; in 阅读全文
posted @ 2019-03-11 09:31 醉曦 阅读(3209) 评论(0) 推荐(0) 编辑
摘要:list简介 list 也是顺序容器的一种。只是list 是一个双向链表。使用 list 需要包含头文件 list。双向链表的每个元素中都有一个指针指向后一个元素,也有一个指针指向前一个元素,如下图所示。 当然,list的用法和vector很类似,也拥有顺序容器中的常用方法,需要注意的是 list不 阅读全文
posted @ 2019-03-10 23:33 醉曦 阅读(45072) 评论(6) 推荐(7) 编辑
摘要:STL算法 STL 提供能在各种容器中通用的算法(大约有70种),如插入、删除、查找、排序等。 许多算法操作的是容器上的一个区间(也可以是整个容器),因此需要 两个参数 ,一个是区间起点元素的迭代器,另一个是区间终点元素的后面一个元素的迭代器。例如,排序和查找算法都需要这两个参数来指明待排序或待查找 阅读全文
posted @ 2019-03-10 21:23 醉曦 阅读(900) 评论(0) 推荐(0) 编辑
摘要:vector简单说明 vector也是一个容器,并且是个顺序容器。顺序容器有 可变长数组vector 、 双向链表list 、 双端队列deque 。 顺序容器的定义,是因为容器元素的位置和他们的值大小无关,也就是说顺序容器不排序。 所有的容器都有以下两个方法: int size() : 返回容器对 阅读全文
posted @ 2019-03-10 21:11 醉曦 阅读(5588) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示