c++
文章平均质量分 67
little丶Sunshine
I believe that I can give you that what you want to!
展开
-
Onvif soap库使用辅助类
onvif gsoap API调用辅助接口原创 2023-10-20 15:27:34 · 146 阅读 · 0 评论 -
算法库(c++)
算法库原文如下:算法库提供大量用途的函数(例如查找、排序、计数、操作),它们在元素范围上操作。注意范围定义为[first, last),其中last指代要查询或修改的最后元素的后一个元素。 受约束算法 C++20 在命名空间std::ranges中提供大多数算法的受约束版本,能以迭代器-哨位对或单个range参数指定范围,并且支持投影和指向成员指针可调用对象。另外更改了大多数算法的返回类型,以返回算法执行过程中计算的所有潜在有用信息。 std::vecto...原创 2021-05-11 14:37:22 · 2771 阅读 · 0 评论 -
Parameter pack(形参包)
形参包分两种:模板形参包 函数模板形参包模板形参包出现于别名模版、类模板、变量模板及函数模板形参列表中,简单说就是跟在template关键字后面尖括号<>里的东西语法: 类型 ... Args(可选) (1) typename|class ... Args(可选) ...原创 2021-05-10 16:06:55 · 1554 阅读 · 0 评论 -
optional、tuple、any、variant
std::optionaloptional适合用于函数返回值,当返回值为空时,optional将不会消耗额外的内存空间。构造: std::optional<int> op = std::nullopt; std::optional<std::string> op1 = { "123" }; // std::in_place指明直接调用std::string("consruct")构造std::string对象 std::optional<std:原创 2021-05-06 15:23:54 · 548 阅读 · 0 评论 -
锁(mutex)使用(c++11、c++14、c++17)
新的C++版本提供了以下锁: mutex (C++11) recursive_mutex (C++11) shared_mutex (C++17) timed_mutex (C++11) recursive_timed_mutex (C++11...原创 2021-04-29 13:56:53 · 2481 阅读 · 2 评论 -
C++ format格式化输出字符串简单版实现
本实例基于C++11的可变长参数实现:#include <iostream>#include <sstream>#include <string>static void _format_help( std::ostringstream& os, const std::string& format, std::size_t offset){ os << format.substr(offset, format.size(原创 2021-04-28 11:23:37 · 1744 阅读 · 0 评论 -
Poco Json使用示例
#include "Poco/JSON/JSON.h"#include "Poco/JSON/Array.h"#include "Poco/JSON/Parser.h"#include "Poco/JSON/ParseHandler.h"#include <iostream>using Poco::JSON::Object;using Poco::JSON::Array;using Poco::JSON::ParseHandler;using Poco::JSON::Parse原创 2021-04-20 11:25:19 · 1013 阅读 · 0 评论 -
动态规划之跳跃游戏
跳跃游戏给出一个非负整数数组,你最初定位在数组的第一个位置,数组中的每个元素代表你在那个位置可以跳跃的最大长度,判断你是否能到达数组的最后一个位置。 样例 1: 输入: [2,3,1,1,4] 输出: true 样例 2: 输入: [3,2,1,0,4] 输出: false解答:定义dp[i][j]为数组长度为i时,以第j个位置为最后一个跳点时是否能到达最后一个位置。则有状态转换方程:dp[i][j] = dp[j][j] && (j+A[j]原创 2020-12-15 13:32:20 · 360 阅读 · 2 评论 -
动态规划之不同的路径
不同的路径 有一个机器人的位于一个 m × n 个网格左上角.机器人每一时刻只能向下或者向右移 动一步。机器人试图达到网格的右下角。现在考虑网格中有障碍物,那样将会有多少 条不同的路径?网格中的障碍和空位置分别用 1 和 0 来表示。 样例 1: 输入: [[0]] 输出: 1 样例 2: 输入: [[0,0,0],[0,1,0],[0,0,0]] 输出: 2解答:定义dp[i][j]为从左上角到点[i-1][j-1]的路径数,因只可右或下行走故:dp[i原创 2020-12-15 11:44:24 · 128 阅读 · 0 评论 -
动态规划之数字三角形
数字三角形 给定一个数字三角形,找到从顶部到底部的最小路径和.每一步可以移动到下面一行的相邻数字上。 样例 1: 输入: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 输出: 11 解释: 从顶到底部的最小路径和为11 ( 2 + 3 + 5 + 1 = 11) 样例 2: 输入: [ [2], [3,2], [6,5,7], [4,4原创 2020-12-15 11:43:04 · 186 阅读 · 0 评论 -
动态规划之分割回文串
分割回文串 给定字符串 s, 需要将它分割成一些子串, 使得每个子串都是回文串.最少分割几次? 样例 1: 输入: "a" 输出: 0 解释: "a" 本身就是回文串, 无需分割 样例 2: 输入: "aab" 输出: 1 解释: 将 "aab" 分割一次, 得到 "aa" 和 "b", 它们都是回文串.解答:定义DP[i][j]为字符串s长度为i时,前j个字符使得每个子串都是回文串并且s的第j+1到第i个字符组成的子串也是回文的最小分割成次数.则DP[i][j原创 2020-12-15 11:42:01 · 451 阅读 · 1 评论 -
动态规划之单词拆分
单词拆分 给定字符串 s 和单词字典 dict,确定 s 是否可以分成一个或多个以空格分隔的子串, 并且这些子串都在字典中存在. 样例 1: 输入: "lintcode", ["lint", "code"] 输出: true 样例 2: 输入: "a", ["a"] 输出: true解答:定义dp[i][j]为s的前i个字符并且s的第j个字符到第i个字符划分为一个字串时是否可行则有状态转换方程dp[i][j] = dp[i][j] || {dp[j-1][j-1原创 2020-12-15 11:40:52 · 264 阅读 · 1 评论 -
动态规划之背包问题
背包问题 在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m, 每个物品的大小为A[i]. 样例 1: 输入: [3,4,8,5], backpack size=10 输出: 9 样例 2: 输入: [2,3,5,7], backpack size=12 输出: 12解答:定义:DP[i][j]表示有i个物品并且容量为j时,能装下的最大值。根据第i个物品仅有2种方案:1. 装入:此时为DP[i-1][j-A[i]] + A[i]2. 不装入:此时为D原创 2020-12-15 11:35:51 · 203 阅读 · 0 评论 -
动态规划之最长上升子序列
最长上升子序列 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度. 样例 1: 输入: [5,4,1,2,3] 输出: 3 解释: LIS 是 [1,2,3] 样例 2: 输入: [4,2,4,5,3,7] 输出: 4 解释: LIS 是 [2,4,5,7] 最长上升子序列的定义: 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低到高排列的 子序列,这种子序列不一定是连续的或者唯一的。解答:定义DP[i] 为整数序列中第i个值为原创 2020-12-15 11:34:16 · 100 阅读 · 0 评论 -
动态规划之最长公共子序列
最长公共子序列 给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度. 样例 1: 输入: "ABCD" and "EDCA" 输出: 1 解释: LCS 是 'A' 或 'D' 或 'C' 样例 2: 输入: "ABCD" and "EACB" 输出: 2 解释: LCS 是 "AC"解答:定义DP[i][j]为A的前i个字符和B的前j个字符的最大公共子序列长度·当末尾字符相等时,DP[i][j] = DP[i-1][j-1] + 1;·当原创 2020-12-15 11:32:39 · 54 阅读 · 0 评论 -
动态规划之交叉字符串
交叉字符串给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成. 样例 1: 输入: "aabcc" "dbbca" "aadbbcbcac" 输出: true 样例 2: 输入: "aabcc" "dbbca" "aadbbbaccc" 输出: false解答:定义DP[i][j] 为s1的前i个字符和s2的前j个字符是否匹配s3的前i+j个字符即:s3的第i+j个字符要么和s1的第i个字符匹配,要么和s2的第j个字符匹配,并且前i+原创 2020-12-15 11:29:58 · 183 阅读 · 0 评论 -
动态规划实例
动态规划:基本内容1. 具有最有子结构:即可划分多个同类型子问题求解2. 重叠子问题:即很多子问题都会被重复计算3. 确定状态,某一个子问题的求值结果4. 确定边界,可想象为矩形框边框初始值(如0行和0列)5. 确定状态转移方程,即当前规模扩大一步需执行的操作(类似于数列里的前一项和后一项的关系)程序编写步骤1. 确定DP缓存矩阵大小(建议0行0列不使用)2. 创建DP矩阵并初始化3. 初始化边界值(一般是第1行第1列)4. 以行列循环根据状态转换方程依次求子问题解5. 从DP矩阵中原创 2020-12-10 19:08:34 · 117 阅读 · 0 评论 -
领扣:解压字符串
描述小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串太长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S] (m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC],现在小A收到了小Q发送过来的字符串,你能帮助他进行解压缩么?S的长度<=1000;S仅包含大写字母、[、]、|;解压后的字符串长度不超过100000;压缩递归层数不超过10层;样例输入 : “HG[3|B[原创 2020-12-05 13:37:44 · 91 阅读 · 0 评论 -
领扣:矩阵最小路径和
描述给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。Tip: 你在同一时间只能向下或者向右移动一步样例样例 1:输入: [[1,3,1],[1,5,1],[4,2,1]]输出: 7样例解释:路线为: 1 -> 3 -> 1 -> 1 -> 1。样例 2:输入: [[1,3,2]]输出: 6解释: 路线是: 1 -> 3 -> 2解答有两种方案可以实现:采用递归,实现简单,但是数据大时性能弱。原创 2020-11-30 16:21:56 · 79 阅读 · 0 评论 -
C++算法中堆相关函数的使用(make_heap/pop_heap/push_heap/sort_heap)
1.make_heap()make_heap()用于把一个可迭代容器变成一个堆,默认是大顶堆。它有三个参数。第一个参数是指向开始元素的迭代器,第二个参数是指向最末尾元素的迭代器,第三个参数是less<>()或是greater<>(),前者用于生成大顶堆,后者用于生成小顶堆,第三个参数默认情况下为less<>(),less()用于生成大顶堆。要使用less(),以及greater(),请添加头文件#include ,且一定要加括号less<>()举例:原创 2020-11-27 14:12:29 · 682 阅读 · 1 评论 -
领扣:二叉树后序遍历(非递归)
描述给出一棵二叉树,返回其节点值的后序遍历。解答:了解下后序遍历,在二叉树中,先左后右再根,即首先遍历左子树,然后遍历右子树,最后访问根结点。那么非递归的思想下,我们可以考虑采用深度优先遍历访问节点的算法来输出后序遍历。由此我们需要借助栈。同时,我们需要考虑到如果确认节点是否被访问过,因此我们借助set容器保存已经被访问过的节点。容器内的节点表示该节点被访问过。代码:/** * Definition of TreeNode: * class TreeNode { * public:原创 2020-11-27 10:25:08 · 75 阅读 · 0 评论 -
信号集
信号是由用户、系统或者进程发送给目标进程的信息。linux信号的产生条件:前台进程通过终端发送信号,如Ctrl+C系统运行时产生的异常,如非法内存访问系统状态变化,如alarm定时器定时发送的SIGALRM信号kill命令或kill函数发送的信号信号处理方式信号处理函数原型: typedef void(*__sighandler_t) ( int )系统自带信号处理函数 -SIG_IGN:忽略信号 -SIG_DFT:默认处理linux可用信号定义在bit/signum.h头原创 2020-11-26 11:12:09 · 122 阅读 · 0 评论 -
VS Code 添加头文件路径
本文讲述使用VS code编写C++程序,使用非标准库的其他路径下的头文件时编译错误的问题解决办法。官网路径已详细介绍了VS Code如何安装C++扩展以及配置编译环境:https://code.visualstudio.com/docs/cpp/config-mingw整个文章大致流程:下载并安装Visual Studio Code安装C/C++扩展下载Mingw-w64并安装,然后将安装目录下的bin路径加入到环境变量path中创建helloworld文件夹, 用 VS Code打开该文原创 2020-09-16 20:03:18 · 4715 阅读 · 3 评论 -
linux errno错误描述参照表
#ifndef _ASM_GENERIC_ERRNO_BASE_H#define _ASM_GENERIC_ERRNO_BASE_H#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No such pro...原创 2019-11-16 09:56:06 · 297 阅读 · 0 评论 -
套接字选项配置(win\linux)
windowsint SSO_SetSocketOption(SOCKET sock, int level, int name, LPVOID val, int len){ return setsockopt(sock, level, name, (CHAR*)val, len);}int SSO_GetSocketOption(SOCKET sock, int level, in...原创 2019-11-13 11:32:09 · 272 阅读 · 0 评论 -
lua调用C++函数
1. 静态方式#ifndef _DLL_MODULE_LUA_GLUE_HPP_#define _DLL_MODULE_LUA_GLUE_HPP_// 加载lua头文件#include "lua.hpp"// 第一步:定义luaGlue函数int add(lua_State* L){ double op1 = lua_tonumber(L, -1); double op2 ...原创 2019-05-17 17:06:11 · 3937 阅读 · 2 评论 -
RTP ES流解析
typedef struct tagNETDEVParseVideoData { BYTE *pucData; /* 视频数据指针 Pointer to video data */ INT32 dwDataLen; /* 视频数据长度 Video data length */ INT32 dwVideoFrameT...原创 2020-11-27 14:12:17 · 360 阅读 · 0 评论 -
C++ 几个特殊符号
#把宏参数变为一个字符串,仅可用于宏定义中。如:int GetLength(std::string str){ return str.length();}#define LEN(str) GetLength(#str)int main(){ std::string str = "abcdefg"; cout << LEN(str) << endl;...原创 2019-06-25 10:48:17 · 6081 阅读 · 0 评论 -
C++说明符与限定符
说明符1. auto: 在C++11中不再是说明符。在C++11前,auto指出变量为自动变量,但在C++11后,auto用于自动类型推导。2. register:用于声明中指示寄存器存储,但在C++11中,它只是显示地指出变量是自动的。3. static:静态声明。用在作用域为整个文件的声明中时,表示内部链接行;用于局部声明中,表示无链接性。4. extern:引用声明,即声明引用其...原创 2019-06-25 16:24:35 · 1028 阅读 · 0 评论 -
模板类型推导
模板类型基本形如以下:template<typename T> void f(**ParamType** param);调用类似于下:f(expr); // call f with some expression类型推导分以下三种情况:当ParamType是引用或者指针,不是右值引用时a)如果表达式是引用,那么忽略引用部分例如:template<typ...原创 2019-06-25 17:59:26 · 611 阅读 · 0 评论 -
live555 权限认证代码
char* RTSPClient::createAuthenticatorString(char const* cmd, char const* url) { Authenticator& auth = fCurrentAuthenticator; // alias, for brevity if (auth.realm() != NULL && auth.user...原创 2019-07-18 17:21:19 · 970 阅读 · 0 评论 -
[转载]vfw的AVI族函数读取AVI文件
#include "vfw.h"#pragma comment(lib, "vfw32.lib")#pragma comment(lib, "Winmm.lib") AVIFileInit(); PAVIFILE pAviFile = nullptr; // 打开AVI文件 int nRet = AVIFileOpen(&pAviFile, "10.82.27.20_...原创 2019-08-28 16:44:13 · 368 阅读 · 0 评论 -
C++调用lua示例
1. lua源码下载去官网http://www.lua.org/download.html下载2. 使用luaa)解压包,将源码拷贝出来添加进vs工程b)项目工程代码只需要包含lua.hpp即可,冲突的main函数更改个名字即可,所有的.c文件设置不使用编译头3. lua示例mystr = "hello world"my_table = {name = "yxli8", id = 1...原创 2019-05-15 10:54:51 · 8646 阅读 · 2 评论