- 博客(38)
- 资源 (4)
- 收藏
- 关注
原创 C++ 字符串查找
函数返回str2在str1中首次出现的地址;否则,返回NULL。//判断字符串str2是否是str1的子串。//str1-要查找的字符串或字符串指针。//str2-要查找的子串。
2022-08-02 09:43:58
6202
原创 13 C++内存模型
1.C++程序执行时,将内存分位4个区代码区:存放函数体的二进制代码,有操作系统进行管理;全局区:存放全局变量和静态变量以及常量;堆 区:由程序员分配和释放,弱程序员不释放,程序结束时有操作系统回收;栈 区:由编译器自动分配和释放,存放函数的参数值,局部变量不同区域存放的数据,赋予不同的生命周期。2 程序执行前的内存模型在程序编译后,生成*.exe可执行程序,未执行该程序前分位两个区域。2.1代码区存放 CPU 执行的机器指令。通常代码区是可共享的(即另外的执...
2022-05-16 15:40:39
209
原创 12 按值传递,引用传递
按值传递,引用传递#include <iostream>#include <string>void printByValue(std::string val) //函数参数val是str的副本{ std::cout << val << '\n'; // 通过副本打印值val}void printByReference(const std::string& ref) // 函数参数ref是绑定到str的引用{ std::
2022-05-11 16:09:02
221
原创 11 C++具有多种模板类型的函数模板
#include <iostream>template <typename T>T max(T x, T y){ return (x > y) ? x : y;}int main(){ std::cout << max(1, 2) << '\n'; // 实例化为max(int,int) std::cout << max(1.5, 2.5) << '\n'; //实例化为max(doub
2022-05-10 15:35:26
866
原创 10 C++ 引用
1 C++引用定义:在C++中,引用变量其实就是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦吧引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。type &val=test;参数描述type引用变量的类型val引用变量名test需要应用的变量在定义引用变量是,需要在变量名前加上&符号注意事项:1.&不是取地址运算,而是起标识符作用。2.类型标识符是指目标变量的类型3.声明引用时,必须同时对其初始化。
2022-05-10 09:56:16
148
原创 9 回调函数
在C++中,回调函数就是通过一个函数指针调用的函数,如果你把函数的指针(地址)作为参数传递给另一个函数,党这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是又该函数的实现直接调用,而是在特定的事件或条件发生时又另外的一方调用的,用于对该时间或条件进行相应。回调函数注意点:1.函数指针作为另一个函数参数2.回调函数不是有函数实现方法直接调用3.特定事件或条件发生由另一方调用定义:typedef void(*pFun)(int,int,double)typedef定义了一个
2022-05-09 20:29:50
117
原创 8 函数指针
在C++中 函数指针是一个指针,该指针存放的是一个函数地址,而函数的名称就是函数的入口,即地址,要注意与指针函数的区别。如 int * pFunc(int a) 就是一个指针函数,指的是返回某种类型的指针函数。定义:type(*funcName)(T param);参数描述type该函数的返回类型。funcName函数名T函数参数类型param函数参数我们定义一个函数指针funcName,其返回类型是type,接受一个T类型的参数#include
2022-05-09 20:28:45
84
原创 7 C++指针做函数返回值
在C++中,函数的返回值出来可以是普通的数据类型,还可以是指针类型,我们将函数的返回值定义为指针类,用来返回一个变量的地址,但我们不能返回局部变量的地址。用指针作为函数返回值时,需要注意的一点是,函数运行结束后会销毁内部定义的所有局部数据,包括局部变量,局部数组,形参,函数返回的指针尽量不要指向这些数据。语法如下:type* funname(){ return val;}我们定义了一个funname函数,其返回值为type类型的指针;#include <iostream>us
2022-05-09 17:36:14
1492
原创 6. C++数组名与指针区别
1. C++数组名与指针区别对比数组名指针&(取地址)数组名取地址得到的是数组名所指元素地址(数组首地址)对指针取地址得到的是指针变量自身的地址常量变量数组名师常量指针指针是变量指针sizeof对数组名使用sizeof时,得到的是元素个数乘元素类型的字节数对指针sizeof得到的是指针类型的字节数1.1数组名是常量指针数组名是常量指针,不可以被修改,指针是变量指针,可以修改#include <iostream>using nam
2022-05-09 17:02:58
855
6
原创 获取文件创建,修改访问时间
std::string str_create_time, str_access_time, str_modify_time; FILETIME ftCreate, ftAccess, ftModify;//文件创建时间,访问时间,修改时间 HANDLE hFile = CreateFileA(str_.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, N
2022-05-06 15:42:14
710
转载 获取文件-属性-详细信息
结构包含了文件的版本信息:GetFileVersionInfoSize函数用于判断系统能否检索到指定文件的版本信息,如果可以函数返回版本信息的字节大小:DWORD WINAPI GetFileVersionInfoSize( __in LPCTSTR lptstrFilename, //指定文件的名称 __out_opt LPDWORD lpdwHandle //一个变量的指针,该函数将该变量设为0 ); GetFileVersionInfo函数用来获得指定文件的
2022-05-05 15:06:50
1212
原创 5 前向声明和定义
这个程序看似正常:1.#include <iostream>int main(){ std::cout << "The sum of 3 and 4 is: " << add(3, 4) << '\n'; return 0;}int add(int x, int y){ return x + y;}你会期望这个程序产生结果:3和4之和为:7但实际上,它根本无法编译!Visual Studio 产生
2022-04-27 20:15:55
1245
原创 4 — 局部作用域介绍
局部变量函数参数以及在函数体内定义的变量称为局部变量,例如:int add(int x, int y) // 函数参数x和y是局部变量{ int z{ x + y }; // z也是局部变量 return z;}局部变量生命周期函数参数在输入函数时创建和初始化,函数体内的变量在定义点创建和初始化,自然的后续问题是,那么实例化变量何时被销毁?局部变量在定义它的花括号集的末尾以相反的创建顺序被销毁(或者对于函数参数,在函数的末尾)。例如:int add(int x, int
2022-04-27 13:08:25
221
原创 3 配置编译器:警告和错误级别
当您编写程序时,编译器将检查以确保您遵循 C++ 语言的规则。如果你做了一些明确违反语言规则的事情,在编译期间编译器会发出一个错误,提供包含错误的行号,以及一些关于预期内容和发现内容的文本。实际错误可能在该行或前一行。一旦您识别并修复了错误的代码行,您可以尝试再次编译。在其他情况下,编译器可能会发现看似错误的代码,但编译器无法确定。在这种情况下,编译器可能会选择发出警告。警告不会停止编译,而是通知程序员似乎有问题。最佳实践1 提高警告级别将您的警告级别调到最大,尤其是在您学习的时候。它将帮助您
2022-04-26 15:26:17
1697
翻译 2 编译器、链接器和库简介
1 源码编译我们使用 C++ 编译器编译 C++ 程序,C++ 编译器按顺序遍历程序中的每个源代码 (.cpp) 文件,并执行两项重要任务:首先,它会检查您的代码以确保它遵循 C++ 语言的规则。如果没有,编译器会报错(给出相应的行号)来帮助你修改相应的bug。编译过程也将中止,直到错误得到修复。其次,它将您的 C++ 源代码翻译成称为目标文件的机器语言文件。对象文件通常命名为name.o或name.obj(C++生成。obj),其中name与生成它的 .cpp 文件的名称相同。如果有三个.cpp
2022-04-26 14:50:49
400
原创 C++ 学习网站
https://github.com/0voice/cpp_new_features#-%E5%B9%B2%E8%B4%A7%E9%93%BA
2022-04-26 13:47:17
1470
原创 1 C++ 11 新特性
1 auto自动推导C++11允许你声明一个变量或对象而不需要指明其类型,只需说他是auto,例如: auto i=5;//i是int类型 double f(); auto d=f();//i是double类型以auto声明的变量,其类型会根据其初始值被自动推导出来,因此一定需要一个初始化的操作:auto i;//这种定义是错误的//可为它加上额外的限定符,例如:static auto d=0.19;//如果类型很长或表达式很复杂,auto特别有用,例如:vector<int&g
2022-04-26 10:19:08
936
转载 获取文件信息
获取文件信息char* szFileName = "C:\\windows\\system32\\cmd.exe"; DWORD dwSize = GetFileVersionInfoSize(szFileName,NULL); LPVOID pBlock = malloc(dwSize); GetFileVersionInfo(szFileName,0,dwSize,pBlock); char* pVerValue = NULL;
2022-04-13 16:43:12
174
原创 atal error C1189: #error : WINDOWS.H already included. MFC apps must not #include
在最前面的头文件添加#include <afx.h>
2022-03-29 13:19:57
311
原创 Vcpkg常用命令
vcpkg search [pat] 搜索可用于生成的包vcpkg install … 安装软件包vcpkg remove … 卸载软件包vcpkg remove --outdated 卸载所有过期的软件包vcpkg list 列出已安装的软件包vcpkg update 显示要更新的包列表vcpkg upgrade
2022-03-28 20:22:00
799
原创 vs 动态库环境配置
一 电脑环境变量配置二.vs 环境配置1.电脑→属性→高级系统设置→环境变量→系统变量的path2.编辑环境变量,点击新建,把路径添加进去就OK了注:如果配置后不起作用,请重启电脑二.vs 环境配置工程属性→配置属性→调试→环境PATH = E:\Image\bin;%PATH%...
2022-03-07 09:33:35
522
原创 C++std::package_task
#include "thread_pool.h"#include <iostream>#include <vector>#include <thread>#include <list>#include <mutex>using namespace std;int myth(int m){ cout << "myth start() " << "th_id:" << std::this_thre
2022-03-04 11:15:00
1057
原创 C++ async
#include "thread_pool.h"#include <iostream>#include <vector>#include <thread>#include <list>#include <mutex>using namespace std;class A{public: int myth(int m) { cout << "myth start() " << "th_id:" &
2022-03-04 10:32:44
1296
原创 C++ 多线程 call_once
#include "thread_pool.h"#include <iostream>#include <vector>#include <thread>#include <list>#include <mutex>using namespace std;std::once_flag g_flag;//这是系统定义的标记//单例类class MyCSA{ static void CreateInstance()//只被调用
2022-03-03 16:38:24
724
原创 单例模式,多线程
#include "thread_pool.h"#include <iostream>#include <vector>#include <thread>#include <list>#include <mutex>using namespace std;mutex res_mux;//单例类class MyCSA{ private: MyCSA() {};//私有化的构造函数 static MyCSA *m_i
2022-03-02 14:16:44
132
原创 C++ 单例模式
#include <iostream>#include <vector>#include <thread>#include <list>#include <mutex>using namespace std;//单例类class MyCSA{private: MyCSA() {};//私有化的构造函数private: static MyCSA *m_instance;//静态成员变量public: static MyCS
2022-02-16 18:13:58
64
原创 多线程 互斥量死锁
#include "thread_pool.h"#include <iostream>#include <vector>#include <thread>#include <list>#include <mutex>using namespace std;//全局变量class myobj{public: void inmsgRecvQueue() { for (int i = 0; i < 100000; ++
2022-02-16 15:22:12
82
原创 多线程 共享数据 mutex
#include <iostream>#include <vector>#include <thread>#include <list>#include <mutex>using namespace std;//全局变量class myobj{public: void inmsgRecvQueue() { for (int i = 0; i < 100000; ++i) { cout << "
2022-02-15 16:08:13
109
原创 多线程数据共享
#include "thread_pool.h"#include <iostream>#include <vector>#include <thread>#include <list>using namespace std;//全局变量class myobj{public: void inmsgRecvQueue() { for (int i = 0; i < 100000; ++i) { cout <<
2022-02-15 15:04:58
96
原创 thread 多线程
#include <iostream>#include <vector>#include <thread>using namespace std;void fun1(int slp){ cout << "线程开始:" << slp << endl; return;}int main(){ //1.创建多个线程 vector<thread>mythread; //创建10个线程,线程入口函数统一使
2022-02-15 13:34:11
297
原创 labelme颜色标注
import jsonimport osimport os.path as ospimport warningsimport PIL.Imageimport yamlfrom labelme import utilsimport base64def JSON_to_IMG(json_file, save_file): """ 将指定目录下的json标注文件全部转换为以下文件:①jpg原图文件、 ②png标签文件 ③其他相关说明文件 。存储在指定路径下 :par
2022-01-11 13:29:29
896
1
原创 libtorch 常用API
1.常见固定值的初始化方式//zeros产生值全为0的张量 auto b = torch::zeros({ 3,4 }); //ones产生值全为1的张量 b = torch::ones({ 3,4 }); //eye产生单位矩阵张量。 b = torch::eye(4); //full产生指定值和尺寸的张量。 b = torch::full({ 3,4 }, 10); b = torch::tensor({ 33,22,11 });在这里插入代码片...
2021-12-23 19:30:05
887
翻译 Installation of VCPKG
Installation of VCPKG@TOCGo to https://github.com/microsoft/vcpkgFor windows user, follow the Quick Start: Windows instruction.Press Window+R, type “cmd“.In command prompt, type “cd C:/“Then, type “git clone https://github.com/microsoft/vcpkg“(Note:
2021-11-30 13:38:58
121
原创 Visual Studio常用插件
Visual Studio Tools for Git GIT代码管理工具Resharper 代码生成工具CSOutline2017 语法级别的代码折叠SwitchStartupProject 以列表的方式选择启动的项目Code Alignment 提供代码对齐功能, 比如按 =, (, ) 等符号对齐, 也可以自定义对齐基准...
2019-09-07 10:53:57
410
原创 C++文件操作
istream是输入流类,cin就是istream类型的对象;ostream是输出流类,cout是ostream类型的对象。数据类型描述ofstream该数据类型表示输出文件流,用于创建文件并向文件写入信息。ifstream该数据类型表示输入文件流,用于从文件读取信息。fstream该数据类型通常表示文件流,且同时具有 ofstream 和 ifstre...
2019-08-29 09:33:40
207
原创 opencv 中函数copyTo()和clone.()的区别
roi=src.clone(); //1 src.copyTo(roi); //2语句1:不管roi在之前有没有分配内存,clone都会为其分配新内存。如果roi指向某图像img的某个rect,此语句并不能实现对img(rect)的操作,clone分配新内存后,roi不再指向img(rect).语句2:如果roi在之前未分配内存,copyTo会为其分配新内存,若roi已分...
2018-11-20 21:37:26
1034
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人