自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(149)
  • 资源 (6)
  • 收藏
  • 关注

原创 vscode显示120字符或者80字符提示线或者显示垂直标尺

一般规定一行代码不超过80或者120个字符。取决于团队的编码规范。文件-》首选项-》设置-》搜索或添加editor.rulers。vscode显示120字符或者80字符提示线或者显示垂直标尺。打开全局设置的settings.json。不同公司不同团队有不同的规定。效果,颜色可以根据需要设置。添加提示线并配置颜色。

2024-01-16 18:38:11 1048

原创 lambda中的constexpr变量

x 和 z 可以在 lambda 函数中使用而不被捕获,是因为它们具有不同的存储持续时间。x 是一个 constexpr 变量,这意味着它具有在编译时确定的常量值。另一方面,z 是一个全局变量,这意味着它具有静态存储持续时间,并且可以从程序的任何部分访问,包括在 lambda 函数内部。x 是一个 constexpr 变量,它在编译时被确定并存储在只读内存中。这是因为constexpr变量在编译期就已经被计算出来,并且它的值是在编译时确定的,所以在lambda表达式中使用它是安全的。

2023-05-08 15:05:21 194 1

原创 python的 __init__.py文件中使用__all__变量

显示函数的文档:在终端中运行pydoc module_name.function_name,其中module_name是包含要查看文档的函数的模块的名称,function_name是要查看文档的函数的名称。生成HTML格式的文档:在终端中运行pydoc -w module_name,其中module_name是要生成文档的模块的名称。显示模块的文档:在终端中运行pydoc module_name,其中module_name是要查看文档的模块的名称。显示pydoc的帮助:在终端中运行pydoc -h。

2023-05-05 16:45:49 1154

原创 C++ 预编译头文件(Precompiled Header,PCH)

后续编译时,如果其他源文件中也包含了同样的预编译头文件,编译器会直接使用之前生成的二进制文件,而不是重新预处理一遍头文件。它的原理是先将一些常用的头文件预处理,生成一个二进制文件(通常是.pch文件),然后在后续的编译中,直接引用这个二进制文件,避免了重复的预处理过程,从而提高了编译速度。例如,如果你预编译了“stdafx.h”头文件,你就会得到一个预编译头文件,每次你包含“stdafx.h”头文件时,编译器都会自动搜索名为“stdafx.h.gch”的预编译头文件。

2023-05-05 16:22:27 603

原创 常用类型推导和比较

常用类型推导和比较。

2023-02-03 13:47:14 89

原创 聚合体初始化(aggregate initialization)

总的来说,在C++17中满足如下条件之一的对象被认为是聚合体是一个数组或者是一个满足如下条件的类类型classstructunion):没有用户定义的和explicit的构造函数没有使用using声明继承的构造函数没有private和protected的非静态数据成员没有virtual函数没有的基类然而,要想使用聚合体初始化来初始化基类中没有private或者protected的成员没有private或者protected的构造函数。

2023-02-01 17:19:07 718

原创 C++ 17 variant and visit

std::variant是C++ 17的重要新特性。它非常常用以至于不得不去学习它。它实际上是C语言中的union的拓展。它可以存储多种多样的类型,具体类型只有在运行时才能确定。你甚至可以存储自定义的类型。或者是定义一个元素都是variant的数组。这个数组里面每一个元素的类型都可以不相同!而std::visit是与之配套的访问器。通过std::visit能够不关心具体类型地写出算法,实现算法的泛用。

2022-11-17 13:12:37 598

原创 try_emplace向std::map实例中高效并有条件的插入元素

map是STL里重要容器之一。它的特性总结来讲就是:所有元素都会根据元素的键值key自动排序(也可根据自定义的仿函数进行自定义排序),其中的每个元素都是的键值对,map中不允许有键值相同的元素,因此map中元素的键值key不能修改,但是可以通过key修改与其对应的value。如果一定要修改与value对应的键值key,可将已存在的key删除掉,然后重新插入。cpp17 使用我们需要用键值对填充一个map我通常会使用insert或emplace函数对map。

2022-11-01 23:17:10 1922

原创 std::copy, std::copy_if

std::copy, std::copy_if。

2022-10-30 20:46:08 163

原创 快速或安全的访问std::vector实例的方法, std::vector的插入排序

可能是STL容器中适用范围最广的,因为其存储数据的方式和数组一样,并且还有相对完善的配套设施。不过,非法访问一个vector实例还是十分危险的。如果一个vector实例具有100个元素,那当我们想要访问索引为123的元素时,程序就会崩溃掉。如果不崩溃,那么你就麻烦了,未定义的行为会导致一系列奇奇怪怪的错误,查都不好查。经验丰富的开发者会在访问前,对索引进行检查。这样的检查其实比较多余,因为很多人不知道有内置的检查机制。

2022-10-30 20:26:57 797

原创 以O(1)的时间复杂度删除未排序std::vector中的元素

# 以O(1)的时间复杂度删除未排序std::vector中的元素

2022-10-30 19:46:53 825

原创 高效擦除/移除(Erase–remove idiom)std::vector元素

擦除/移除std::vector元素

2022-10-30 19:29:50 3344

原创 向 lambda 传递 this的拷贝

lambda里捕获了 *this,所以传递进 lambda的是一份拷贝。因此,即使在 d被销毁之后使用捕获的对象也没有。如果我们使用[this]、[=]或者 [&]捕获 this,那么新线程将会陷入未定义行为,因为当线程中打印name的。这里,捕获 *this意味着该 lambda生成的闭包将存储当前对象的一份拷贝。向 lambda 传递 this的拷贝。时候将会使用一个已经销毁的对象的成员。

2022-09-18 16:33:07 933

原创 泛型Lambda

泛型Lambda

2022-09-18 16:27:43 603

原创 C++ 11 & 14 中的Lambda表达式 补充

lambda的本质

2022-08-21 17:26:31 255

原创 CPP design pattern Singleton

CPP design pattern Singleton

2022-06-26 15:38:22 285

原创 std::boolalpha

1.头文件#include <iostream>2.使用说明让输出流将bool解析成为true或者 false3、示例代码#include <iostream>void test_boolalpha(){ std::cout << "true is " << true << std::endl; std::cout << "false is " << false << std::endl;

2022-05-16 17:26:55 395

原创 函数名作为字符串输出(Function Names as Strings)

GCC 预定义了两个标识符来保存当前函数的名称。 标识符 __FUNCTION__ 包含函数在源代码中出现的名称。 标识符 __PRETTY_FUNCTION__ 包含以特定语言方式漂亮打印的函数名称。https://www.onlinegdb.com/ online gdb 验证这些名称在 C 函数中始终相同,但在 C++ 函数中它们可能不同。 例如,这个程序:#include <stdio.h>void test_macroFunction(int i, int j){

2022-05-16 17:16:46 317

原创 使用C++11解决内存泄露--智能指针

C++11提供了智能指针,使用智能指针后不需要用户自己释放内存空间,一旦使用时对象超出了自己的生命周期,就会进行自动释放,从而有效解决了内存泄露的问题。在实际编程时,有三种智能指针可供使用,分别是:std::shared_ptr、std::unique_ptr和std::weak_ptr。1 共享智能指针:std::shared_ptrstd::share_ptr指针的每一个拷贝都指向同一个对象,只有在引用计数为零时内存才会被释放。指针声明原型为:template class shared_pt

2022-03-25 10:45:18 1088

原创 常量表达式值 constexpr

常量表达式值(constant-expression value)。通常情况下,常量表达式值必须被一个常量表达式赋值,而跟常量表达式函数一样,常量表达式值在使用前必须被初始化。一、常量表达式1.1 运行时常量性与编译时常量性在C++中,我们常常会遇到常量的概念。常量表示该值不可修改,通常是通过const关键字来修饰的。比如:const int i = 3;const还可以修饰函数参数、函数返回值、函数本身、类等。在不同的使用条件下,const有不同的意义,不过大多数情况下,const描述的都

2022-03-24 17:08:23 1537

原创 C++基础之元编程与constexpr

元编程(metaprogramming)是一个典型的复合词,他由前缀 meta- 和词根 programming 复合而成,有“对一个程序进行编程”的意思。换句话说,编译器先编译你的代码,得到一份新的代码,然后再编译新的代码来解决问题。模板元编程技术,即把一些可以在编译时完成的求值计算,通过模板特化的技术绑定到具体的实例化代码上,从而减少不必要的代码量,提升代码的运行效率。一、C++的元编程1.1 为什么要元编程呢?前面我们知道了什么是元编程,那么为什么要有这种编写技巧呢?无外乎两点:减少重复的代

2022-03-24 14:16:48 2537 1

原创 模板偏特化 Partial specialization

偏特化是指如果一个 class template 拥有一个以上的 template 参数,我们可以针对其中某个(或多个,但不是全部)template 参数进行特化,比如下面这个例子template <typename T>class C {...}; //此泛化版本的 T 可以是任何类型template <typename T>class C<T*> {...}; //特化版本,仅仅适用于 T 为“原生指针”的情况,是泛化版本的限制版所谓特化,就是特殊情

2022-03-23 18:42:20 752

原创 std::vector

#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ vector<int> v {1, 2, 3, 2, 5, 2, 6, 2, 4, 8}; const auto new_end (remove(begin(v), end(v), 2)); v.erase(new_end, end(v));

2022-03-17 17:37:17 496

原创 循环遍历map容器,erase元素的问题

#include <iostream>#include <map>using namespace std;int main(){ map<string,string> testMap{ {"cpp","cpppp"}, {"java","javaaaa"}, {"shell","shelllll"}, {"python", "pythonnnn"} }; map<st

2022-03-14 16:45:19 590

原创 c++11中 std::ref() 和 引用 &

使用std::ref可以在模板传参的时候传入引用,否则无法传递&是类型说明符, std::ref 是一个函数,返回 std::reference_wrapper(类似于指针)用std::ref 是考虑到c++11中的函数式编程,如 std::bind.C++11的设计者认为bind默认应该采用拷贝,如果使用者有需求,加上std::ref()即可。同理std::thread也是这样。example:#include <functional>#include <iostre

2022-03-11 15:58:46 592

原创 基于范围的for循环(range-based for statement)

cpp 11 支持基于范围的for循环for (del : coll){ statement}coll 里的内容会被逐个赋值给delvector<double> vec;...//拷贝赋值for (auto elem : vec){ cout<< elem << endl;}//引用传递for (auto elem& : vec){ elem *= 3;}第一种写法是拷贝赋值,修改elem并不会修改vec里的元素, 如果想要

2022-03-06 16:15:36 172

原创 Chrony使用以及配置为NTP server

ChronyChrony是一个开源的自由软件,如果在chrony配置文件中指定了ntp服务器的地址,那么chrony就是一台客户端,会去同步ntp服务器的时间,如果在chrony配置了允许某些客户端来向自己同步时间,则chrony也充当了一台服务器,所以,安装了chrony即可充当客户端也可以充当服务端。Chrony有两个核心组件,分别是:chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。chronyc:提供一个用户界面,用于监

2022-02-14 10:47:30 5827 2

原创 linux添加sudo权限

设定sudo,需要root权限,或者sudo users sudo vi /etc/sudoers1、定义SHUTDOWN变量所包含的关机操作命令。commands to shutdown/reboot the machineCmnd_Alias SHUTDOWN = /sbin/shutdown,/sbin/reboot,/sbin/halt,/sbin/poweroff2、添加普通用户的sudo权限,可以操作root能够操作的所有指令,但禁止其关机操作,同时取消sudo的密码交互

2022-01-06 17:13:14 1910

原创 openssl 解决编译错误以及安装不同版本的方法

常见错误示例:openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory问题分析:openssl version -a经过查看系统安装的动态库版本,发现没有对应版本,需要自行下载编译下载编译之后,动态库确实错误消失:下载编译方法:OpenSSL库的安装, 去官网下载最新版本官网:http://www.

2021-10-16 13:43:43 626

原创 2021-08-29

fstream提供了三个类,用来实现c++对文件的操作。(文件的创建、读、写)。ifstream -- 从已有的文件读ofstream -- 向文件写内容fstream - 打开文件供读写文件打开模式:ios::in 读ios::out 写ios::app 从文件末尾开始写ios::binary 二进制模式ios::nocreate 打开一个文件时,如果文件不存在,不创建文件。ios::noreplace 打开一个文件时,如果文件不存在,创建该文件ios::trunc 打开一个

2021-08-29 16:10:28 75

原创 C/C++ 中的static关键字

目录:静态成员变量(面向对象)静态成员函数(面向对象)静态全局变量(面向过程)静态局部变量(面向过程)静态函数(面向过程)1. (面向对象的)静态成员变量在类内成员变量的声明前加上关键字static,该数据成员就是类内的静态数据成员。#include <iostream>using namespace std;class Myclass{public: Myclass(int a, int b, int c); void GetSum();private: int

2021-08-15 14:58:01 246

原创 C++ 单例模式

https://zhuanlan.zhihu.com/p/37469260

2021-08-15 14:18:31 44

原创 C++ 虚函数、纯虚函数

https://zhuanlan.zhihu.com/p/37331092https://blog.csdn.net/MUMU23333/article/details/80105446

2021-08-15 13:44:12 197

原创 C++11 decltype表达式

decltype在某些情况下,不需要或者不能定义变量,但是希望得到某种类型,这时候就可以使用 C++11 提供的 decltype 关键字了,它的作用是在编译器编译的时候推导出一个表达式的类型,语法格式如下:C++ decltype (表达式)decltype 是 “declare type” 的缩写,意思是 “声明类型”。decltype 的推导是在编译期完成的,它只是用于表达式类型的推导,并不会计算表达式的值。来看一组简单的例子:int a = 10;decltype(a) b = 99;

2021-08-08 10:34:24 1004

原创 C++11 auto

在 C++11 中增加了很多新的特性,比如可以使用 auto 自动推导变量的类型,还能够结合 decltype 来表示函数的返回值。使用新的特性可以让我们写出更加简洁,更加现代的代码。auto在 C++11 之前 auto 和 static 是对应的,表示变量是自动存储的,但是非 static 的局部变量默认都是自动存储的,因此这个关键字变得非常鸡肋,在 C++11 中他们赋予了新的含义,使用这个关键字能够像别的语言一样自动推导出变量的实际类型。1.1 推导规则C++11 中 auto 并不代表一种

2021-08-08 09:46:59 624

原创 C++11 继承构造函数

继承构造函数C++11 中提供的继承构造函数可以让派生类直接使用基类的构造函数,而无需自己再写构造函数,尤其是在基类有很多构造函数的情况下,可以极大地简化派生类构造函数的编写。先来看没有继承构造函数之前的处理方式:#include <iostream>#include <string>using namespace std;class Base{public: Base(int i) :m_i(i) {} Base(int i, double j) :

2021-08-07 19:33:13 210

原创 C++11 委托构造函数

委托构造函数委托构造函数允许使用同一个类中的一个构造函数调用其它的构造函数,从而简化相关变量的初始化。下面举例说明:#include <iostream>using namespace std;class Test{public: Test() {}; Test(int max) { this->m_max = max > 0 ? max : 100; } Test(int max, int min) {

2021-08-07 19:23:34 175

原创 C++11 using 语法

using 语法和 typedef 一样,并不会创建出新的类型,它们只是给某些类型定义了新的别名。using 相较于 typedef 的优势在于定义函数指针别名时看起来更加直观,并且可以给模板定义别名。在 C++ 中 using 用于声明命名空间,使用命名空间也可以防止命名冲突。在程序中声明了命名空间之后,就可以直接使用命名空间中的定义的类了。在 C++11 中赋予了 using 新的功能,让 C++ 变得更年轻,更灵活。1. 定义别名在 C++ 中可以通过 typedef 重定义一个类型,语法格式如

2021-08-07 19:08:48 1045 1

原创 C++11 final和override

C++ 中增加了 final 关键字来限制某个类不能被继承,或者某个虚函数不能被重写。如果使用 final 修饰函数,只能修饰虚函数,并且要把final关键字放到类或者函数的后面。修饰函数如果使用 final 修饰函数,只能修饰虚函数,这样就能阻止子类重写父类的这个函数了:#include <iostream>using namespace std;class Base{public: virtual void test() { cout &lt

2021-08-07 11:39:20 250

原创 C++ 11 & 14 中的Lambda表达式

auto func = [capture] (params) opt -> ret { func_body; };[捕获列表] (形参列表) mutable 异常列表-> 返回类型{ 函数体 }捕获列表:定义lambda函数所在的作用域中的指定变量可以在lambda函数中使用其中func是可以当作lambda表达式的名字,作为一个函数使用,capture是捕获列表,params是参数表,opt是函数选项(mutable之类), ret是返回值类型,func_body是函数体。各项的含义:

2021-07-28 21:04:08 373

OpenCV3.4.2-YOLOv3.7z

OpenCV-YOLOv3示例代码、预训练模型以及测试图像/视频。让我们看看YOLO如何在一张图片中检测目标。 首先,它把原图按比例平均分解成一张有13x13网格的图片。这169个单元会根据原图的大小而改变。对于一张416x416像素的图片,每个图片单元的大小是32x32像素。处理图片时,会以图片单元为单位,预测单位中的多个边界框。 对于每个边界框,这个网络会计算所包含物体的边界框的置信度,同时计算所包含的目标是属于一个特定类别的可能性大小。 非最大抑制(non-maximum suppression)可以消除低置信度的边界框,以及把同时包围着单个物体的多个高置信度的边界框消除到只剩下一个。

2020-03-04

numpy matplotlib 及其依赖whl文件包

python2.7适用的机器学习第三方插件 numpy matplotlib 及其依赖whl文件包 离线(在线)安装合集,内附安装顺序及执行命令代码

2020-02-06

dbg_amd64.rar

QT中配置msvc所用Windbg Windbg是Microsoft公司免费调试器调试集合中的GUI的调试器,支持Source和Assembly两种模式的调试。Windbg不仅可以调试应用程序,还可以进行Kernel Debug。结合Microsoft的Symbol Server,可以获取系统符号文件,便于应用程序和内核的调试。Windbg支持的平台包括X86、IA64、AMD64。

2020-02-06

MFC图像处理.rar

x64 realse可运行 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#、Ch、Ruby,GO的支持。

2020-01-03

第十届蓝桥杯大赛选手资源数据包(单片机)

驱动代码说明 1-本文件夹中提供的驱动代码供参赛选手完成程序设计参考之用。 2-选手可以自行编写相关代码或以该代码为基础,根据试题中的时钟频率要求,调整延时间隔。 3-提供驱动代码的测试环境:IAP15F2K61S2单片机 @12MHz。 DS1302

2019-03-22

C++控制台渲染一朵逼真的玫瑰花

C++控制台渲染一朵花,vs2015 EasyX_2018春分版图形库实现,工程和图形库均在资源里

2019-03-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除