上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 52 下一页
摘要: C++11 引入了右值引用,本文从实用角度出发,用尽量通俗易懂的语言讲清左右值引用的原理,性能分析及其应用场景,帮助大家在日常编程中用好右值引用和 std::move。 一、什么是左值、右值 首先不考虑引用以减少干扰,可以从 2 个角度判断:左值可以取地址、位于等号左边;而右值没法取地址,位于等号右 阅读全文
posted @ 2021-04-21 21:24 fengMisaka 阅读(1493) 评论(0) 推荐(1)
摘要: 五、技巧 当设计 C++软件时, 总会再三地受到一些问题的困扰。 你如何让构造函数和非成员函数具有虚拟函数的特点? 你如何限制一个类的实例的数量? 你如何防止在堆中建立对象呢?你如何又能确保把对象建立在堆中呢?其它一些类的成员函数无论何时被调用, 你如何能建立一个对象并让它自动地完成一些操作?你如何 阅读全文
posted @ 2021-04-21 19:04 fengMisaka 阅读(412) 评论(1) 推荐(1)
摘要: 四、效率 本章的内容从两个角度阐述效率的问题。第一是从语言独立的角度,关注那些你能在任何语言里都能使用的东西。C++ 为它们提供了特别吸引人的实现途径,因为它对封装的支持非常好,从而能够用更好的算法与数据结构来替代低效的类似实现,同时接口可以保持不变。 第二是关注 C++ 语言本身。高性能的算法与数 阅读全文
posted @ 2021-04-21 19:03 fengMisaka 阅读(1583) 评论(1) 推荐(0)
摘要: 一、C++ 内存区域 C++ 内存分为 5 个区域: 堆 heap : 由 new 分配的内存块,其释放编译器不去管,由程序员自己控制。如果程序员没有释放掉,在程序结束时系统会自动回收。涉及的问题:“缓冲区溢出”、“内存泄露”。 栈 stack : 是那些编译器在需要时分配,在不需要时自动清除的存储 阅读全文
posted @ 2021-04-13 20:07 fengMisaka 阅读(1301) 评论(0) 推荐(0)
摘要: 一、vector 概述 vector 的数据安排以及操作方式,与 array 非常相似。两者的唯一差别在于空间的运用的灵活性。array 是静态空间,一旦配置了就不能改变。 vector 是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此, vector 的运用对于内存的合理利 阅读全文
posted @ 2021-04-06 16:35 fengMisaka 阅读(831) 评论(0) 推荐(0)
摘要: 迭代器的失效问题:对容器的操作影响了元素的存放位置,称为迭代器失效。 失效情况: 当容器调用erase()方法后,当前位置到容器末尾元素的所有迭代器全部失效。 当容器调用insert()方法后,当前位置到容器末尾元素的所有迭代器全部失效。 如果容器扩容,在其他地方重新又开辟了一块内存。原来容器底层的 阅读全文
posted @ 2021-04-06 14:39 fengMisaka 阅读(13849) 评论(2) 推荐(5)
摘要: 一、什么是死锁? 如果你将某个mutex上锁了,却一直不释放,另一个线程访问该锁保护的资源的时候,就会发生死锁,这种情况下使用lock_guard可以保证析构的时候能够释放锁,然而,当一个操作需要使用两个互斥元的时候,仅仅使用lock_guard并不能保证不会发生死锁,如下面的例子(双线程多锁申请) 阅读全文
posted @ 2021-04-06 11:19 fengMisaka 阅读(2966) 评论(0) 推荐(0)
摘要: 一、前言 由于 FFmpeg 是使用 C 语言开发,所有和函数调用都是面向过程的。所以这里全部代码先放在 main 函数中实现,经过测试和修改后功能正常,再以 C++ 面向对象的方式逐步将代码分解和封装。 二、效果展示 下面代码只先实现音视频解码,解码数据写入文件。解码后的 RGB 和 PCM 数据 阅读全文
posted @ 2021-03-31 19:55 fengMisaka 阅读(1978) 评论(0) 推荐(1)
摘要: 一、前言 在正式编写 FFmpeg 播放器前,我们需要先简单了解下所要用到的 FFmpeg 库、播放与解码流程、函数和相关结构体。 二、FFmpeg 库简介 库 介绍 avcodec 音视频编解码核心库 avformat 音视频容器格式的封装和解析 avutil 核心工具库 swscal 图像格式转 阅读全文
posted @ 2021-03-31 19:50 fengMisaka 阅读(4335) 评论(1) 推荐(2)
摘要: 一、std::async介绍 std::async用于创建异步任务,实际上就是创建一个线程异步执行相应任务,它接受回调(即函数或函数对象)作为参数。 std::async就是异步编程的高级封装,相当于封装了std::promise、std::packaged_task加上std::thread,基本 阅读全文
posted @ 2021-03-25 14:18 fengMisaka 阅读(5891) 评论(0) 推荐(2)
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 52 下一页