
C++
文章平均质量分 56
HUI的技术笔记
这个作者很懒,什么都没留下…
展开
-
Lambda 表达式
简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。原创 2022-04-25 11:03:46 · 310 阅读 · 0 评论 -
vscode配置C++调试
vscode打开一个目录后生成.vscode目录,如果配置有问题,可以把.vscode删掉。这是后进入左侧的run and debug,默认是没有的,选择C++(GDB/LLDB)-> g++ -build and debug active file,然后Terminal -> Configure Default Build Task -> C++ g++ build active file这时候出现task.json,修改fileDirname/{fileDirname}/fileD原创 2022-03-07 15:47:39 · 4393 阅读 · 0 评论 -
std::move的理解
std::moveC++11开始引入了std::move,引入std::move主要是为了优化对象的生命周期,以及优化函数参数传递方式。然后又引入了一个右值得概念, 之前又有一个左值得概念。左值和右值网上特别多,这里把这些理解汇总下。左值和右值左值与右值的根本区别在于是否允许取地址&运算符获得对应的内存地址。变量可以取地址,所以是左值,但是常量和临时对象等不可以取地址,所以是右值。左值是表达式结束后依然存在的持久对象(代表一个在内存中占有确定位置的对象)。右值是表达式结束原创 2022-01-23 18:14:18 · 1286 阅读 · 0 评论 -
C++11 ThreadPool总结
github两个实现 https://github.com/progschj/ThreadPool https://github.com/mtrebi/thread-pool最先找到第一个的,看了一头雾水,过于难懂,第二个和第一个实现有些地方一样,但是文档写的很全。其中enqueue的实现在看了example的代码之后,因为不熟悉拉姆达表达式,造成了很大的困扰。 ThreadPool pool(4); std::vector< std::future<.原创 2020-12-22 09:59:14 · 2629 阅读 · 0 评论 -
非常方便的一个Linux timer c11实现
void start(int interval, std::function<void()> task);void startOnce(int delay, std::function<void()> task);这个timer的实现是通过std::thread实现,start函数是启动一个无限循环的timer,直到调用stop结束,_try_to_expire是stop的条件,如果_try_to_expire一直为false,就每次sleep给定的时间段后执行一次task。.原创 2020-10-20 20:56:46 · 349 阅读 · 0 评论 -
nv21(yuv420sp)水平镜像翻转实现
输入数据是yuv,输出是flipyuv, uv分量是交替存储,uvsize刚好是height/2 * width, 下面的实现没有考虑stride的情况。```void CvtNV21FlipH(Mat& mYUV, Mat& mflipYUV) { int width = mYUV.cols; int height = mYUV.rows; // flip Y data for (int j = 0; j < height; j++) {...原创 2020-10-14 20:58:07 · 1191 阅读 · 0 评论