C++
文章平均质量分 89
herryone123
这个作者很懒,什么都没留下…
展开
-
Linux segmentation fault 错误定位方法及C指针用法
用于C++ segmentation fault 错误定位原创 2022-07-07 08:56:37 · 1274 阅读 · 0 评论 -
C++ 11线程池
一、基本概念1.1 为什么要用线程池创建/销毁线程伴随着系统开销,过于频繁的创建和销毁线程会影响程序的处理效率:如创建线程消耗时间为T1,执行任务消耗时间为T2,销毁线程消耗时间为T3,若T1+T3 > T2 ,则开启一个线程执行该任务不划算。1.2 线程池的基本思想因为程序边运行边创建线程是比较耗时的,所以我们通过池化的思想:在程序开始运行前创建多个线程,这样,程序在运行时,只需要从线程池中拿来用就可以了.大大提高了程序运行效率。参考文献:https://b...原创 2022-01-16 14:50:40 · 7414 阅读 · 0 评论 -
使用valgrind工具定位内存泄漏问题
原创 2021-11-26 17:04:22 · 570 阅读 · 0 评论 -
C++11类型转换总结
一、强制类型转换用C++中的四个强制类型转换的关键字:static_cast,const_cast,reinterpret_cast,dynamic_cast1 static_cast1.1 简介1.2 语法用法为static_cast<type-id> (expression)。 该运算符把 expression 转换为 type-id 类型,但没有运行时类型检查来保证转换的安全性1.3 使用场景 (1)用于类层次结构中基类(父类)和派生类(子类)之间.原创 2021-11-26 16:39:12 · 2486 阅读 · 0 评论 -
C++11常见编译与链接错误解决总结
1、error: no matching function for call to没有匹配的函数2、'xxxx' was not declared in this scope'xxxx' 在这个范围内没有声明3、ambiguous overload for 'operator='重载不明确原创 2022-05-05 15:27:12 · 17205 阅读 · 0 评论 -
C++ STL容器元素正确删除
参考文献:【1】迭代器失效问题:https://www.cnblogs.com/willowcc1803/p/10194757.html原创 2021-09-06 08:55:16 · 3670 阅读 · 0 评论 -
C++11锁的用法( 多线程,并发,错误使用、std::ref用法、RAII)
参考文献:原创 2021-07-16 07:12:47 · 2368 阅读 · 0 评论 -
c++ boost库学习boost::any用法
1.1 boost::any()作用:是定义一个变量来存放任意类型的数据,它类似于比如像纯面向对象语言java或.net中的Object类型。Boost::Any的实现比较简单,Any拥有一个模版构造函数,这使他可以接受任何类型的对象。真正的变量内容被封装在嵌套类类型的成员变量中,并且在嵌套类中使用typeid来记录真正的类型信息。#include <iostream>#include <list>#include <boost/any.hpp>t.原创 2021-07-06 07:51:22 · 5416 阅读 · 0 评论 -
C++11 模板用法总结
1.1 简介C++提供了两种模板机制,函数模板和类模板。使用范围:模板的声明或定义**只能在全局或类范围进行**,不能在局部范围(如函数)内进行。 使用目的:使用模板是为了能够让程序员**编写与类型无关的代码。函数模板和模板函数区别**:函数模板是一个模板,其中用到通用类型参数,不能直接执行;模板函数是一个具体的函数,它是一个具体执行的函数,由编译系统在遇到具体函数调用时生成,可执行。1.2 函数模板1.2.1 函数模板格式template <类型形参表或称模板参数列表>原创 2021-07-06 07:49:15 · 1893 阅读 · 5 评论 -
Linux 程序异常诊断工具(pstack与strace命令使用详解、死锁)
参考文献:【1】linux命令之pstack:http://www.voidcn.com/article/p-tigeosxb-ph.html原创 2021-06-22 08:24:44 · 4822 阅读 · 0 评论 -
C++ 成员运算符与作用域解析运算符
1、成员函数成员函数可以在类中定义,也可在类外进行定义,在类外定义成员函数时,使用作用域解析运算符“:” 来表示所定义的函数是某个类的成员。原创 2021-06-17 08:56:21 · 3549 阅读 · 0 评论 -
C++回调函数实战总结
一1.2 函数指针函数指针声明:(1)函数声明int foo(int);(2)函数指针声明 int (*p)(int)=&foo;//& 可以省略(3)函数指针使用 (*p)(10); p(10);举例:void Invoke(const char* s);int main(){ void (*fp)(const char* s); //声明一个函数指针(fp) fp = Invoke;..原创 2021-06-16 14:02:29 · 995 阅读 · 0 评论 -
C++实现md5值详解及计算方法(openssl)
参考文献:【1】http://www.metools.info/code/c26.html原创 2021-06-11 08:37:19 · 1223 阅读 · 0 评论 -
C++ transform解决G++编译没有匹配函数的问题
参考文献:【1】C++ transform:https://www.cnblogs.com/balingybj/p/4678880.html原创 2021-06-06 11:21:01 · 1088 阅读 · 0 评论 -
C++ 异常处理总结
一、参考文献:【1】C++异常处理:https://www.runoob.com/cplusplus/cpp-exceptions-handling.html原创 2021-04-10 20:41:39 · 3419 阅读 · 0 评论 -
C++ 虚函数与多态性
一、参考文献:【1】C++:为什么在继承关系中,父类的析构函数最好定义为虚函数?:https://blog.csdn.net/han8040laixin/article/details/81704165原创 2021-04-06 09:57:51 · 1208 阅读 · 3 评论 -
Restful 学习笔记1(包含centos boost库安装)
一、基础知识1.1 restfulREST全称是Representational State Transfer,中文意思是表述性状态转移。REST原则,围绕资源展开讨论,从资源的定义、获取、表述、关联、状态变迁等角度。(1)资源要让一个资源可以被识别,需要有个唯一标识,在Web中这个唯一标识就是URI(Uniform Resource Identifier)。URI既可以看成是资源的地址,也可以看成是资源的名称。参考文献:【1】理解RESTful架构:http://ww.原创 2021-04-05 13:49:48 · 610 阅读 · 1 评论 -
C++11 文件读写(vs2019 安装配置boost库)
1 创建文件boost::filesystem是Boost C++ Libraries中的一个模块,主要作用是处理文件(Files)和目录(Directories)。1.1 定义目录boost::filesystem::path使用头文件#include "boost/filesystem.hpp"boost::filesystem::create_directory(''/root/mytest") ; 创建目录boost::files.........原创 2021-02-17 10:35:36 · 3486 阅读 · 0 评论 -
Cmake学习实战-基础篇
一、原创 2021-02-12 16:09:04 · 2660 阅读 · 0 评论 -
C++11 对象复制、右值、std::move、完美转发、万能函数包装器
1 对象之间的复制2 右值3 std::move4 完美转发原创 2021-01-24 15:42:32 · 1129 阅读 · 2 评论 -
C++11动态内存与智能指针
一、动态内存二、智能指针原创 2021-01-10 11:33:42 · 3783 阅读 · 1 评论 -
C++11mutimap 与map用法总结
一、map 用法1、map数据的插入#include <iostream>#include <map>#include <string>#include <vector>#include <algorithm>using namespace::std;//数据插入 map<int, string> mapStudent; /*四种插入的方式*/ mapStudent.insert(map&l原创 2021-01-09 11:54:57 · 1086 阅读 · 0 评论 -
C++11 lambda表达式用法总结、std::function 、std::bind
一原创 2020-12-05 20:34:09 · 2190 阅读 · 0 评论 -
C++ 11异步操作类
1.1引入异步操作类的原因int a = 1;std::thread thread([a](int b) { return a + b;}, 2);thread.join();不能获取线程的执行结果。1.2 异步操作类的分类std::future 作为异步操作结果的传输通道,方便获取线程函数的返回值。 std::promise 用来包装一个值,将数据和future绑定起来,方便线程赋值。 std::package_task 用来包装一个可调用对象,将函数和future绑原创 2021-07-21 08:07:31 · 530 阅读 · 0 评论 -
c++11模板用法
1.1 简介1、简介C++提供了两种模板机制,函数模板和类模板。使用范围:模板的声明或定义只能在全局或类范围进行,不能在局部范围(如函数)内进行。使用目的:使用模板是为了能够让程序员编写与类型无关的代码。函数模板和模板函数区别:函数模板是一个模板,其中用到通用类型参数,不能直接执行;模板函数是一个具体的函数,它是一个具体执行的函数,由编译系统在遇到具体函数调用时生成,可执行。1.2 函数模板1、函数模板格式template <类型形参表或称模板参数列表> //类型原创 2020-08-23 10:19:59 · 479 阅读 · 0 评论 -
C++调用dll文件步骤
一、基本知识1、DLL是一个包含可由多个程序同时使用的代码和数据的库。使用dll可以提高代码的复用率,简化部署与安装。二、使用方法使用封装好的dll文件有两种方式,一种需要lib库;另一种不需要lib库,使用反射获取dll。分别为加载时动态链接和运行时动态链接。1、加载时动态链接在加载时动态链接中,应用程序像调用本地函数一样对导出的DLL函数进行显示调用。要使用加载时动态链接,...原创 2019-11-06 14:25:22 · 8377 阅读 · 0 评论 -
C++封装成dll文件及C#调用流程
一、C++程序封装成dll文件1、新建动态链接库项目生成的文件包含以下文件:其中,targetver.h可以声明要导出的dll中函数名;Dll1.cpp实现要导出的函数功能。targetver.h内容如下:#pragma once// 包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。// 如果要为以前的 Windows 平台生成应用...原创 2019-10-31 14:35:52 · 3519 阅读 · 0 评论 -
C++学习笔记2(类和对象)
一、C++类和对象的基本概念1、C++是一种基于过程和面向对象的混合型的语言。基于过程:函数是构成程序的基本部分,程序面对的是一个个函数。每个函数都是独立存在于程序中,除了主函数只能被操作系统调用外,各个函数可以相互调用。面向对象:除了主函数外,其他函数都是出现在类中,只有通过类才能调用类中的函数。程序的基本构成单位是类,程序面对的是一个个类和对象。2、面向对象设计的4个主要特点:...原创 2018-11-08 14:03:39 · 312 阅读 · 0 评论 -
C++学习笔记4(继承、派生、多重继承)
1、继承在一个已经存在的类的基础上建立一个新的类。通过继承,一个新建子类从已有的父类那里获得父类的特性。从另一角度看,从已有的类(父类)产生一个新的子类,称为类的派生。单继承:一个派生类只从一个基类派生多重继承:一个派生类有两个或多个基类。派生类是基类的具体化,而基类是派生类的抽象。2、声明派生类的一般形式:class 派生类名:[继承方式] 基类名{ ...原创 2018-11-09 22:19:17 · 1275 阅读 · 0 评论 -
C++和C# 结构体用法比较
一、C++结构体用法1、结构体:结构体用来存放若干不同类型(也可以是相同类型)的数据项。2、结构体类型的格式struct 结构体类型名{ 类型名 成员名;};如:struct Student{ int num; char name[20]; int age; float score; char addr[30];}...原创 2019-01-08 10:06:31 · 2429 阅读 · 1 评论 -
C++ explicit关键字的作用
1、explicit作用在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。2、使用特点explicit 关键字只能用于类内部的构造函数声明上。 explicit 关键字作用于单个参数的构造函数。 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转...原创 2019-03-02 14:52:29 · 788 阅读 · 0 评论 -
C++ const用法
一、基本知识1、const常量限定符,用来限定特定变量,以通知编译器该变量是不可修改的。习惯性的使用const,可以避免在函数中对某些不应修改的变量造成可能的改动。二、面向过程设计用法(1)const修饰一般常量及其数组表示const修饰的变量值是不可改变的。const int a=10;const int arr[3]={1,2.3};也可以写成以下形式in...原创 2019-03-23 22:25:31 · 184 阅读 · 0 评论 -
C++ 重载函数和重载运算符
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。一、函数的重载1、函数的重载:C++允许用同一函数名定义多个函数,而这些函数的参数个数和参数类型可以不相同。即一个函数名重新赋予它新的含义使一个函数名可以多用。2、普通成员函数重载...原创 2019-04-01 21:41:04 · 2296 阅读 · 1 评论 -
C++多态性、虚函数、抽象类
一、多态C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。1、多态:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为。C++中,多态性表现形式之一,具有不同功能的函数可以用同一个函数名,即函数的重载2、多态性,从系统实现上分为静态多态性和动态多态性(1)静态多态性:在程序编译时系统就能决定调用的是哪个函数。如函数的重载和运算符的重载。...原创 2019-04-02 20:34:39 · 248 阅读 · 0 评论 -
C++ 常用类型(auto、类型转换、decltype)
一、类型转换1、string转换成int、double、float等类型基于c++11标准,<string>中已经封装好了对应的转换方法#include<string>using namespace std;//添加名称空间string d="123";double num=stod(d);//string 转换doubleint num=stoi(...原创 2022-12-29 08:49:51 · 2237 阅读 · 1 评论 -
C++对数据文件的操作与文件流
一、基本知识1、文件 文件是程序设计中一个重要的概念,“文件”一般指存储在外部介质上的数据集合。常用的文件有两大类,一类是程序文件,另一类是数据文件。根据文件中数据的组织形式,可以分为ASCII文件和二进制文件。ASCII文件又称为文本文件或字符文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件又称内部格式文件或字节文件,是把内存中的数据按其在内存中...原创 2019-05-07 13:07:22 · 1178 阅读 · 0 评论 -
Matlab Coder将m文件转换成C/C++
1、打开matlab coder2、建立转换工程 本实验使用ChebyshevFilter.m文件function [data5] =SignalProcessing( data4 )%m文件的内容end自动生成ChebyshevFilter.prj的工程文件,点击Next3、为函数设置输入参数点击Let me enter input or ...原创 2019-05-05 20:38:15 · 4995 阅读 · 3 评论 -
C++ 函数模板与类模板
一、函数模板1、函数模板:建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟类型来代表这个通用函数来代表。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中虚拟的类型,从而实现不同函数的功能。作用:功能相同而数据类型不同的一些函数,不必一一定义各个函数,通过定义一个可以对任何类型变量操作的模板函数,...原创 2019-06-21 21:01:36 · 2111 阅读 · 0 评论 -
C#调用C++dll文件的注意事项
一、基本概念1、c++是非托管代码,c#是非托管代码,c#调用c++需要把c++编译成dll文件后才能用。托管代码:由公共语言运行环境执行的代码。非托管代码:在公共语言环境的外部,由操作系统直接运行的代码。2、dll是动态库静态库与动态库的区别静态库:在程序的链接阶段被复制到了程序中,和程序运行时没有关系。动态库:在链接阶段没有被复制到程序中,而是在程序在运行时由系统动...原创 2018-09-25 14:39:55 · 785 阅读 · 0 评论