
C++
文章平均质量分 60
WX Chen
实用技术总结,前沿科技分享,欢迎交流技术和业务
展开
-
C++调用yolov5 onnx模型的初步探索
用opencv的dnn模块做yolov5目标检测的程序,包含两个步骤:(1).把pytorch的训练模型.pth文件转换到.onnx文件。第二步编写yolov5.py文件,把yolov5的网络结构定义在.py文件里,此时需要注意网络结构里不能包含切片对象赋值操作,F.interpolate里的size参数需要加int强制转换。不过,最近我发现在yolov5-pytorch程序里,其实可以直接把原始训练模型.pt文件转换生成onnx文件的,而且我在一个yolov5检测人脸+关键点的程序里实验成功了。原创 2023-01-20 17:44:32 · 2622 阅读 · 0 评论 -
初步学习c++ createthread()多线程
要使用的这个线程需要将这个资源(取钱这个过程)先“锁”起来,然后用好之后再解锁,这期间别的线程就无法使用了,其他线程的也是类似的过程。cout原创 2023-01-20 17:02:10 · 396 阅读 · 0 评论 -
microsoft visual c++ build tools
因为visual studio的安装包太大,所以在不需要开发的情况下,可以选择使用microsoft visual c++ build tools安装c++编译器,这个工具会小很多。安装使用Visual C++ 编译器的 standalone(独立)版,而不需要安装庞大的Visual Studio。可以使用Microsoft C++ 生成/构建工具(Build Tools)来安装Visual C++ 编译器。visual c++ build tools的安装与使用。原创 2023-01-20 16:59:36 · 10421 阅读 · 0 评论 -
C++读取配置文件方法
参考了一个方法,个人认为写得很好,在这里记录下来。转载 2023-01-20 16:56:13 · 2351 阅读 · 0 评论 -
CreateThread() 多线程函数
// multi_thread.cpp#include "multi_thread.h"using namespace std;// 线程函数DWORD WINAPI ThreadProc(LPVOID lpParam){ MYDATA *pmd = (MYDATA *)lpParam; cout << "val: " << pmd->val << endl; cout << "string: " <&l...原创 2022-04-03 17:33:40 · 562 阅读 · 0 评论 -
Visual Studio操作
VS中设置#define _CRT_SECURE_NO_WARNINGS的两种方式属性->配置属性->C/C++ ->预处理器->预处理器定义->编辑最下面加上一行:_CRT_SECURE_NO_WARNINGS (注意不需要#define)https://www.cnblogs.com/ttss/p/4161815.htmlVS画面暂停链接器->系统->子系统选择 Console(/SUBSYSTEM:CONSOLE)https://..原创 2021-12-09 10:01:51 · 641 阅读 · 0 评论 -
Linux C++ 编译学习
Linux下编译生成动态链接库*.soCMakeLists.txt和Makefile将这几个文件(.h文件放在一个目录下)编译成一个动态库:libtest.so$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so将test.c(main函数文件)与动态库libtest.so链接生成执行文件test:$ gcc test.c -L. -ltest -o test测试是否动态连接,如果列出libtest.so,那么应该是连原创 2021-12-09 09:47:40 · 859 阅读 · 0 评论 -
C++文件操作
保存到txthttps://blog.youkuaiyun.com/CV_YOU/article/details/79160755读写txt本文的基本操作https://blog.youkuaiyun.com/naibozhuan3744/article/details/78678571逐行读取txt文件https://blog.youkuaiyun.com/stpeace/article/details/12404925将数据添加到文件的末尾write.open("result.txt", ios::app);http原创 2021-12-09 09:44:49 · 636 阅读 · 0 评论 -
C++指针操作
方法一:双指针void GetMemory(char ** p, int num){ *p = (char *)malloc(num*sizeof(char));}int main(){ char *str = NULL; GetMemory(&str,10); strcpy(str, “hello”); // C语言的字符串拷贝 free(str); str = NULL; return 0;}https://blog.youkuaiyun.com...原创 2021-12-09 09:42:25 · 363 阅读 · 0 评论 -
C++类型转换
int转换为stringto_string函数https://blog.youkuaiyun.com/chavo0/article/details/51038397int转换为charitoachar转换为intatoistring转换为intstoistring转换成char*字符串string str="adcd";char *p=(char*)str.c_str();https://blog.youkuaiyun.com/sunshihua12829/article/details/48003原创 2021-12-09 09:37:31 · 728 阅读 · 0 评论 -
C++计时函数
C++ error LNK2001:无法解析的外部符号_imp_timeGetTime的解决办法在文件头部添加#pragma comment(lib, "winmm.lib")#include <windows.h>https://blog.youkuaiyun.com/qq_34504481/article/details/80924302void test1(){ time_t start,stop; start = time(NULL); foo();//dos...原创 2021-12-08 11:23:04 · 1057 阅读 · 0 评论 -
简单了解OpenMP
OpenMP 是 Open MultiProcessing 的缩写。OpenMP 并不是一个简单的函数库,而是一个诸多编译器支持的框架,或者说是协议吧,总之,不需要任何配置,你就可以在 Visual Studio 或者 gcc 中使用它了。http://www.cnblogs.com/ospider/p/5265975.html#pragma omp parallel转载 2017-02-26 20:34:26 · 379 阅读 · 0 评论 -
openMP 嵌套循环
应该尽量少的使用parallelfor, 因为parallel for也需要时间开销采用嵌套并行并不一定能提高效率,只有在合适的地方设置并行才能达到事半功倍的效果原创 2017-02-26 20:35:09 · 3031 阅读 · 0 评论 -
atoi()函数
字符串转换为整型 string 是C++ STL定义的类型,atoi是 C 语言的库函数,所以要先转换成 char* 类型才可以用 atoi。string s;cin>>s;int result = atoi( s.c_str() );...原创 2017-02-26 20:43:09 · 222 阅读 · 0 评论 -
C++中的虚函数(virtual function)
虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。class A{public: virtual void foo() { cout };class B: public A{public: virtual void foo() { cout };那么,在使用的时候,我们可原创 2017-03-25 21:25:14 · 700 阅读 · 0 评论 -
c/c++:内存泄露和野指针
内存泄漏 用动态存储分配函数(new或malloc)( 需要进行内存是否申请成功的判断)动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元,不能被任何程序再次使用,直到程序结束。即所谓内存泄漏。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。野指针 “野指针”不是NULL指针,是未初始化或未清零的指针,他指向的转载 2017-03-25 21:25:45 · 352 阅读 · 0 评论 -
C++中派生类重写基类重载函数
#includeusingnamespacestd;classBase{public: virtualvoidprint() { //如果不加virtual,输出的全是基类 cout "print() in Base." } voidprint(inta) {原创 2017-03-25 21:26:11 · 4458 阅读 · 0 评论 -
inline函数的好处与缺点
优点:1)inline定义的内联函数,函数代码被放入符号表中,在使用时进行替换(像宏一样展开),效率很高。2)类的内联函数也是函数。编绎器在调用一个内联函数,首先会检查参数问题,保证调用正确,像对待真正函数一样,消除了隐患及局限性。3)inline可以作为类的成员函数,刀可以使用所在类的保护成员及私有成员。缺点:内联函数以复制为代价,活动产函数开销1)如果函数的代码较长,使原创 2017-03-25 21:26:32 · 3741 阅读 · 0 评论 -
new创建对象,对象保存在堆还是栈?
new创建对象,对象保存在堆还是栈?-->堆内存是用来存放由new创建的对象和数组,即动态申请的内存都存放在堆内存-->栈内存是用来存放在函数中定义的一些基本类型的变量和对象的引用变量例子:局部变量存放在栈;new函数和malloc函数申请的内存在堆;函数调用参数,函数返回值,函数返回地址存放在栈堆和栈的区别 1、栈区(stac原创 2017-03-25 21:26:52 · 27405 阅读 · 4 评论 -
字符数组赋值
char a[10];怎么给这个数组赋值呢?1、定义的时候直接用字符串赋值char a[10]="hello";注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!2、对数组中字符逐个赋值char a[10]={'h','e','l','l','o'};3、利用strcpychar a[10]; strcpy(a, "he原创 2017-03-25 21:27:48 · 398 阅读 · 0 评论 -
字符串 相等问题
#includeusingnamespacestd;intmain(){ charstr1[] ="abc"; charstr2[] ="abc"; constcharstr3[] ="abc"; constcharstr4[] ="abc"; char*原创 2017-03-25 21:29:26 · 407 阅读 · 0 评论 -
static和const修饰符
按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量,static成员变量的初始化顺序按照定义的顺序进行初始化;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:对于静态变量在内存中只有一个拷贝(节省内存)(可以有多个类对象,但是只有一个静态变量),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直原创 2017-03-25 21:27:24 · 443 阅读 · 0 评论 -
static 静态函数
面向过程:定义静态函数的好处: • 静态函数不能被其它文件所用; • 其它文件中可以定义相同名字的函数,不会发生冲突;面向对象:静态成员函数由于不是与任何的对象相联系,因此它不具有this指针。从这个意义上讲,它无法访问属于类对象的非静态数据成员,也无法访问非静态成员函数,它只能调用其余的静态成员函数原创 2017-06-01 23:00:09 · 420 阅读 · 0 评论 -
变量在内存中的存储
在栈中分配的变量主要是:参数,函数内定义的局部变量,由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。 堆:主要是用new操作符来定义的申请的内存空间,不是在编译器来管理分配,而是有程序自身来管理申请与销毁。通常是用delete来删除释放内存空间。 常量数据区:存放程序定义的一些常量。常量在理论上是不让改变的。 自由存储区:就是那些由malloc等分配的原创 2017-06-01 23:01:58 · 654 阅读 · 0 评论 -
二进制字符串相加
string addBinary(string a, string b) { string res=""; int c=0,i=a.size()-1,j=b.size()-1; while(i>=0||j>=0||c==1) { if(i>=0) { c+原创 2018-01-10 16:38:57 · 1153 阅读 · 0 评论 -
C++拷贝构造函数
最近在找实习,被问到很多基础问题,我都忘得一干二净了,现在有空来整理一下。就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的。拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。拷贝构造函数的参数为什么必须使用引用类型?如果拷贝构造函数中的参数不是一个引用,即形如CClass(c转载 2017-03-25 21:24:14 · 273 阅读 · 0 评论