自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (22)
  • 收藏
  • 关注

原创 c++从精通到入门

前言首先解释下为什么会有这个标题。c++这门语言,在20世纪80年代由Bjarne Stroustrup在贝尔实验室发明。到2020年c++20版本的发布,中间经历了五个c++标准,分别是c++98、c++03、c++11、c++14、c++17。然而大部分人对c++的了解,还停留在c++98或者c++03上。然而就对于这两个版本而言,想要说的上精通谈何容易?更不必说后面的三个标准。网上有这么一个段子:面试官:“9 号,xxx,在吗?”我:“在在在!!”面试官:“来,跟我走”。

2021-11-04 20:55:16 712

原创 现代c++学习笔记

1、结构化绑定(c++17)#include <iostream>#include <tuple>std::tuple<int, double, std::string> fun(){ return std::make_tuple(21, 2.1, "string");}int main(){ auto [x, y, z] = fun(); std::cout << " x = " << x <&

2021-11-01 11:00:08 439

原创 STL之洗牌算法——std :: random_shuffle和std :: shuffle

前言在STL中,有两个函数,可以将容器中的数据进行洗牌——随机排序,这两个函数就是std :: random_shuffle和std :: shuffle。头文件这两个函数在头文件<algorithm>中定义,所以使用这两个函数需要包含头文件:#include<algorithm>。函数原型template<class _RanIt, class _Urng> inline void shuffle(_RanIt _First, _...

2021-04-21 16:50:49 4125

原创 c++/cli(五)——函数

函数托管代码中的函数与非托管代码形式一致,但是参数有些不同:std::string参数对应托管代码中的参数为System::String^。例如:int fun(std::string str);→ int fun(System::String^ str);引用参数需要将值带出函数,托管代码中使用“%”表示。例如:int fun(int &n);→ int fun(int %n);指针参数需要传递类型指针,托管代码中使用“^”表示。例如:int fun(i..

2020-12-16 15:20:56 344

原创 c++/cli(四)——类&结构体

下面开始进入开发阶段。类对于类的处理,就是在c++的类外再封装一层,这里不用关心c++中类的实现是什么、不用关心c++类中的私有成员是什么,只需要把用到的方法重新封装一层即可。c++中的类#include <iostream>#include <string>class Person{ std::string m_name; unsigned m_age;public: Person() ~Person()public

2020-12-16 15:04:40 843

原创 c++/cli(三)——开发环境的搭建

目录开发工具的选择开发环境的搭建新建工程配置项目属性开发工具的选择Visual Studio。本文使用的是Visual Studio 2013。开发环境的搭建新建工程打开vs2013-文件-新建-项目-Visual C++-空项目配置项目属性项目-右键-属性-配置属性-常规-项目默认值配置类型:动态库(.dll)公共语言运行时支持:公共语言运行时支持(/clr)ps:注意平台的选择,是win32还是x64,根据自己的要求选择。...

2020-12-16 14:20:19 366

原创 c++/cli(二)——基本类型对照

c++/CLI与c++类型对照 c++ c++/CLI bool System::Boolean char或signed char System::SByte double或long double System::Double float System::Single long long System::Int64 short System::Int16 std::string System::St

2020-12-16 14:04:19 360

原创 c++/cli(一)——简介

什么是c++/cli?C++/CLI(CLI:CommonLanguageInfrastructure)在计算机语言中是一门由微软设计,用来代替C++托管扩展(Managed C++,下文使用MC++指代)的语言。这门语言在兼容原有的C++标准的同时,重新简化了托管代码扩展的语法,提供了更好的代码可读性。C++/CLI是一门独立的语言(比如新的关键字),而不是像C++托管扩展一样是C++的超集。(C++托管扩展有一些不标准的关键字如__gc和__value)。所以,C++/CLI对于这些语法有...

2020-12-16 13:59:55 2876 1

原创 快速将二进制和十六进制互转|便捷方法|口算

怎么才能快速将二进制与10进制互转?方法如下:首先需要一张表:n(2^n) 128(2^7) 64(2^6) 32(2^5) 16(2^4) 8(2^3) 4(2^2) 2(2^1) 1(2^0) 一、十进制转二进制比如十进制数21,要转换成2进制的话,就从找比21小的2的次方数相加,直到等于21:21=16+4+1,然后就需要用到上面的表,把等式右...

2020-10-23 16:35:40 865 1

原创 二叉树遍历

二叉树遍历分为——前序遍历、中序遍历和后序遍历。三种遍历方法是根据根节点的位置来命名的。按照写“<”这个符号的壁画顺序的遍历为前序遍历,即:根节点-左子树-右子树;然后按照顺时针转动90°,即中序遍历:左子树-根节点-右子树;然后再顺时针转动90°,即后序遍历:左子树-右子树-根节点。每种遍历方法个人总结有两种记忆方法。其中:前序遍历:1.从根节点开始,按照先左后右,第一次经过的节点打印出来即可。如图,从根节点开始,第一次经过根节点,打印,也就是A,继续从左子树遍历,第一次经过B,打印;..

2020-05-24 22:56:40 128

原创 c++11之lambda表达式

在2011年8月的一天,国际标准化组织(ISO)和国际电工委员会(IEC)旗下的C++标准委员会(ISO/IEC JTC1/SC22/WG21)发布了c++的最新标准:c++11。新的标准终于带来了令人兴奋的新特性——lambda。本文带来了lambda的基本使用方法。lambda即匿名函数,使用方法如下:capture:捕捉外部变量列表,可以是[],[...

2020-01-13 15:01:16 107

原创 boost.asio官方测试例子地址

https://www.boost.org/doc/libs/1_72_0/doc/html/boost_asio/example/

2020-01-06 15:20:22 238

原创 解决“libboost_thread.so.xxx.xxx.xxx: cannot open shared object file: No such file or directory”问题

使用boost库的时候,编译没问题,但是运行的时候报“libboost_thread.so.xxx.xxx.xxx: cannot open shared object file: No such file or directory”错误,解决方法如下: 执行:sudo ldconfig /usr/local/boost_xxx_xxx_xxx/stage/lib...

2020-01-04 23:45:21 2884

原创 CMake之多目录结构

目录结构如下:其中bin为执行文件的输出目录,etc为配置文件目录,include为头文件的目录,lib为生成的库目录,src为cpp文件的目录。根目录的CMakeLists.txt内容为:include目录中的文件为:src目录中的文件为:src目录中的CMakeLists.txt为:然后在根目录中执行cmake .,生成MakeFile文件,然后执行ma...

2019-12-05 10:17:41 1391

原创 c和c++函数声明的区别

如果你声明一个函数:int fun();,函数参数为空的时候,在c中的意思是函数参数不确定,而在c++中的意思是函数参数为空。如果函数这样声明:int fun(void);,这时不论是在c中还是在c++中的意思都是函数参数为空。...

2019-09-06 11:26:44 582

原创 stl容器之vector

vector是stl中常用的容器类,这里为大家简单介绍下使用方法以及使用时注意的事项。vector(向量),是模板类,也就是说可以初始化为可储存各种类型的容器,可以是字符型、整数型,以及类类型。其中储存的元素在内存中是连续的,这点同数组一样,可以提供随机访问。定义的方法如下:vector<int> vec;这里定义了一个存储类型为int的vector。...

2019-08-19 18:15:55 155

原创 c++中的多态

多态,顾名思义,就是多种形态。总的来说就是一句话:使基类指针或引用可以访问子类对象。 介绍多态前,先说函数调用捆绑。 把函数体与函数调用相联系称为捆绑(binding)。当捆绑在程序运行之前(由编译器和连接器)完成时,这个叫早捆绑(early bingding)。在C语言中,捆绑的方式只有一种——早捆绑。而在运行时发生的捆绑,叫做动态捆绑(dyn...

2019-08-16 15:50:43 111

原创 c和c++中的const区别

在c中,const是外部链接,而在c++中是内部链接。 在c++中,当定义一个常量:const int i = 0;时,默认是不分配内存空间的,如果只是用来做常量转换,那编译器只是在代码中展开变量,但是如果当取常量地址时或者显示声明为外部链接:extern const int i = 0;,则编译器为其分配内存空间。 所以在c中,在一个文件定义了常量:con...

2019-08-08 18:09:58 122

原创 c++中malloc和new的区别

在c++中,依然支持从c继承过来的malloc和free,但是与new和delete的区别是:malloc是库函数,用malloc申请内存是对库函数的调用,不属于编译器管理的范畴,也就是说编译器无法控制其行为,使用malloc只是单纯的申请一块内存空间,不能调用自定义类型的构造函数。而new却是属于操作符,在编译器管理的范围之内。这样,当申请的内存类型为自定义类型时,如果用mall...

2019-07-25 16:53:21 88

原创 vim使用Vundle安装YouCompleteMe插件

使用的系统是ubuntu18.041.首先安装git:sudo apt install git。2.安装clang:sudo aptinstall clang。3.安装python:sudo apt install python3、sudo apt install python3-dev。4.cd到用户路径下,安装Vundle:cd ~;git clone https://gi...

2019-07-23 21:32:21 470

c++语言CSV文件分割解析

使用c++开发的csv文件解析类。 namespace cpp { namespace str { /** 高性能的 csv 解析 */ class csv_parser { public: typedef std::pair<size_t, size_t > string_t; typedef std::vector<string_t > fields_t; csv_parser(const char* input, char delimiter); csv_parser(const std::string& input, char delimiter); csv_parser(const char* begin, const char* end, char delimiter); // 字段数量 size_t size() const; // 字段数量是否为空,等价于 size() == 0 bool empty() const; // 返回第 index 个字段。避免拷贝构造。注意,返回的 string_t 不包括 \0 const string_t& at(size_t index) const; // 返回第 index 个字段。需要字符串构造,用于对性能要求不高的环境 std::string operator[](size_t index) const; // 返回原始的输入行 const char* input() const; // 返回字段偏移信息 const fields_t& field() const; private: csv_parser(const csv_parser& rhs); csv_parser& operator= (const csv_parser& rhs); void parse(); const char* begin_; const char* end_; const char delim_; fields_t field_; }; } }

2021-10-27

linux串口数据转TCP

linux串口数据转TCP程序以及源码,可编译成arm版本

2021-10-27

佳能相机EDSDK再次封装

使用佳能相机官方sdk进行再次封装,实现如下功能: //python回调函数接口 typedef void (*PROPERTYEVENT_CALLBACK)(EdsUInt32 inEvent, EdsUInt32 inPropertyID, EdsUInt32 inParam); PROPERTYEVENT_CALLBACK g_property_callback[MAX_CAMERA]; typedef void (*OBJECTEVENT_CALLBACK)(EdsUInt32 inEvent); OBJECTEVENT_CALLBACK g_object_callback[MAX_CAMERA]; typedef void (*STATEEVENT_CALLBACK)(EdsUInt32 inEvent, EdsUInt32 inParam); STATEEVENT_CALLBACK g_state_callback[MAX_CAMERA]; //初始化 EDSDK_API EdsError Init(EdsUInt16 index); EDSDK_API EdsError UnInit(EdsUInt16 index); //拍照 EDSDK_API EdsError HalfShutterAFC(EdsUInt16 index); EDSDK_API EdsError TakePicture(EdsUInt16 index, char** path); EDSDK_API EdsError TakePictureNoAF(EdsUInt16 index, char** path); //录像 EDSDK_API EdsError StartVideo(EdsUInt16 index); EDSDK_API EdsError StopVideo(EdsUInt16 index, char** path); //取景器实时预览 EDSDK_API EdsError StartLiveView(EdsUInt16 index); EDSDK_API EdsError EndLiveView(EdsUInt16 index); EDSDK_API EdsError DownloadEvfImage(EdsUInt16 index, void** pointer, EdsUInt64* length); //调焦 EDSDK_API EdsError SetCameraFocus(EdsUInt16 index, short focus); EDSDK_API void SetFocusCount(EdsUInt16 index, long count); EDSDK_API unsigned int CalFocus(unsigned short objectDistance); EDSDK_API void AutoFocusInit(EdsUInt16 index); EDSDK_API void AutoFocus(EdsUInt16 index, unsigned int objectDistance); //属性 EDSDK_API EdsError SetProperty(EdsUInt16 index, EdsPropertyID propertyID, EdsInt32 property); EDSDK_API EdsError GetProperty(EdsUInt16 index, EdsPropertyID propertyID, EdsUInt32* data); EDSDK_API EdsError GetEvent(); //属性衍生 //切换拍照、录像模式 EDSDK_API EdsError SetDevMode(EdsUInt16 index, eCameraMode mode); EDSDK_API EdsError GetDevMode(EdsUInt16 index, EdsUInt16* mode); //拍摄AE模式 EDSDK_API EdsError SetMovieAEMode(EdsUInt16 index, eAEMode mode); EDSDK_API EdsError GetMovieAEMode(EdsUInt16 index, EdsUInt32* mode); //AF模式 EDSDK_API EdsError SetAFMode(EdsUInt16 index, eAFMode mode); EDSDK_API EdsError GetAFMode(EdsUInt16 index, EdsUInt32* mode); 。。。。。。

2021-10-27

exosip_c++.tar.tgz

使用exosip解析sip pcap包。完整的程序,在centos下编译通过,使用c++编写。编译器为g++。

2020-04-28

使用python通过qq邮箱代理发送邮件

python发送邮件,通过qq邮箱代理,具体怎么设置请百度(获取qq邮箱授权码),可以发送邮件到邮箱,非常简洁的代码

2019-07-31

mfc操作exce类

mfc操作excel类,实现功能如下: //设置默认活动sheet void SetActiveSheet(); //设置sheet void SetActiveSheet(const CString &strSheetName); //获取sheet名字 vector<CString> GetSheetName(); //获取已使用行数 long GetUsedRows(); //获取已使用列数 long GetUsedColumns(); //获取已使用区域的起始行,从1开始 long GetStartRow(); //已使用区域的起始列,从1开始 long GetStartCloumn(); //获取表数据 COleVariant GetItemData(long Row, long Cloumn); void GetItemData(TPExcelOperateData &Data); //设置单元格值 void SetCellValue(long Row, long Cloumn, COleVariant &varValue); void SetCellValue(const TPExcelOperateData &Data); void SetCellValue(const vector<stCellData> &vecCellData);

2015-06-10

大小端转换(C++)

提供一个大小端转换的类,可以转换short int float double类型,提供一个大小端转换的类,可以转换short int float double类型,提供一个大小端转换的类,可以转换short int float double类型

2014-01-10

MFC仿QQ程序设计

MFC仿QQ程序设计—完整实例教程,详细步骤教你一步一步实现仿qq程序

2013-06-13

中兴面试题

中兴面试题

2013-05-02

28套超强空白个人简历模板

28套超强空白个人简历模板

2013-05-02

Visual C++游戏编程基础

Visual C++游戏编程基础,游戏开发者入门必备。

2013-04-01

众多名企面试题

名企面试题,包括华为、微软、大唐等企业。是面试者最佳的选择

2013-03-30

数据库面试题

数据库面试题,包含sql和oracle常考的面试题。

2013-03-30

数据结构试题

数据结构试题,包含数据结构常考的题目,是学习数据结构和面试数据结构必备。

2013-03-30

操作系统面试题——操作系统相关

操作系统面试题,包含各种操作系统类的面试题。

2013-03-30

UC经典面试题——linux c

UC面试题,里面包含uc经典面试题,是准备找uc工作的人的首选。

2013-03-30

达内学员面试经典

达内学员面试经典,汇聚多种经典面试题,让你快速掌握面试题。

2013-03-30

高质量C++C 编程指南

高质量C++C 编程指南,提高编码质量的首选,程序员的首选

2013-03-26

你必须知道的495个C语言问题

你必须知道的495个C语言问题,面试人员必备。

2013-03-25

经典算法大全

经典算法大全,详细解说各种算法,学习软件开发的必备产品

2013-03-25

易学c++ pdf

c++学习者的福音,非常适合新手研究学习

2013-03-25

空空如也

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

TA关注的人

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