C/C++
整理、记录工作学习中遇到的问题
Mr.Q
纸上得来终觉浅,绝知此事要躬行。 ---陆游
展开
-
c++ 简单实用万能异常捕获
多层捕获异常,逐渐严格。并打印出错信息和位置:哪个文件,哪个函数,具体哪一行代码。原创 2023-12-29 10:25:25 · 475 阅读 · 0 评论 -
vs真香插件汇总
慢慢汇总各种好用的vs插件.原创 2023-12-27 11:47:07 · 478 阅读 · 0 评论 -
使用vs2019自动生成类图(纯c++项目或者qt项目)
删除自动生成的main.cpp,然后点击项目,添加文件,导入所有的qt源文件即可。然后生成类图和纯c++一样。原因是直接右击项目,然后查看类视图时,整个项目包含了多个命名空间,源码不在同一个命名空间内,如下。如果是查看已存在的Qt项目,则需要新建一个Qt Console Application。解决办法,分别右击每一个命名空间,查看类视图。上面的生成的类试图如下。视图 -》类视图。右击其中一个类,查看类图。(1)值不在预期范围内。原创 2023-12-22 18:35:40 · 1094 阅读 · 0 评论 -
pyclipper和ClipperLib操作多边型
(3) 添加现有clipper头文件和源码 clipper.cpp和clipper.hpp。参数MiterLimit=10是尖角(左图),默认值是2,圆角(右图)(2)vs2019配置clipper环境,只需要添加包含目录即可。MiterLimit默认2圆角(左图),10尖角 (右图)(1)这里使用旧版clipper,下载后解压。原创 2023-11-16 11:10:54 · 609 阅读 · 0 评论 -
libtorch c++复现cycle gan网络
libtorch c++实现cycle gan深度学习网络,用于图像风格变换、图像分割、深度估计、提取图像边缘原创 2023-01-10 12:00:30 · 1041 阅读 · 3 评论 -
c++ 寻找vector中多类型元素位置
使用模板,如此vector中可以是字符串也可以是int整型,支持多类型查找。原创 2022-10-07 17:36:42 · 496 阅读 · 0 评论 -
c++ 以逗号或者其他符号分割中英文字符串和数字型字符串
以逗号或者其他符号,分割数字型(同时支持int、double、float)字符串,并保存到vector数组中。以逗号或者其他符号,分割数字型或者中英文字符串型的字符串。原创 2022-08-26 18:40:55 · 1153 阅读 · 0 评论 -
c++类函数代码打包成dll及其如何调用
调用c++ dll类库原创 2022-02-17 14:52:52 · 6954 阅读 · 0 评论 -
leetcode 23 合并K个升序链表(c++和python)
题目:给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:list...原创 2021-12-06 12:22:36 · 157 阅读 · 0 评论 -
slam十四讲 02 Eigen实践
前言Eigen是一个c++开源线性代数库,提供了快速的线性代数运算。许多上层软件库也是使用了Eigen进行矩阵运算。教程可参考:Eigen: Matrix and vector arithmetichttp://eigen.tuxfamily.org/dox/group__TutorialMatrixArithmetic.html安装# 头文件的默认安装位置:/usr/include/eigen3/sudo apt-get install libeigen3-dev# 定位库安装的位原创 2021-11-29 16:18:50 · 1229 阅读 · 0 评论 -
leetcode 62 不同路径-动态规划(c++和python)
目录动态规划特点求法斐波那契数列 (简单)递归方法(时间复杂度O(2^n))动态规划(时间复杂度O(n))路径问题(中等)c++代码:python代码:动态规划特点问题的答案依赖于问题的规模,比如等差数列(2, 4, 6, 8, ..., 2n). 当前的问题n的规模,决定当前的答案是f(n) = 2n; 当前问题的答案可以通过之前问题的答案推导而来,比如f(n) = f(n-1) + 2。求法这里的前提是没有显示方程,比如前面我们没有显示方程f(原创 2021-11-16 14:03:21 · 141 阅读 · 0 评论 -
c#调用c++类中的方法(onnx C++部署)
环境:vs2019 community场景:探索c#调用C++类,用于部署深度学习onnxC++模型。创建c++空项目Project3在project3下新建AIDetector类ai_detector.h#pragma once#include <stdio.h>#include <stdlib.h>#include <iostream>#ifdef CaculateDLL_EXPORTS#define Calculate_EX.原创 2021-11-02 16:55:03 · 1027 阅读 · 0 评论 -
onnx节点类型对应的TensorRT api
以resnet18为例。1. input节点细则:// const char* INPUT_BLOB_NAME = "data";// static const int INPUT_H = 224;// static const int INPUT_W = 224;// DataType dt = DataType::kFLOAT// Create input tensor of shape { 3, INPUT_H, INPUT_W } with name INPUT_BL原创 2021-07-27 13:37:00 · 936 阅读 · 0 评论 -
网络搭建-tensorRT c++ api和python pytorch api的对比
以lenet5为例(2个卷积 + 3个全连接层)。1.Python api (pytorch) def __init__(self): super(Lenet5, self).__init__() self.conv1 = nn.Conv2d(1, 6, kernel_size=5, stride=1, padding=0) self.pool1 = nn.AvgPool2d(kernel_size=2, stride=2, padding=原创 2021-07-22 16:19:15 · 680 阅读 · 0 评论 -
TensorRT C++ api创建输入层、卷积层、池化层、激活层、全连接层
以lenet5网络为例。1.首先要生成builder,再生成network,用network搭建网络结构。static Logger gLogger;IBuilder* builder = createInferBuilder(gLogger);// kEXPLICIT_BATCH = 0, //!< Mark the network to be an explicit batch network// With dynamic shapes, any of the input di原创 2021-07-22 15:02:06 · 1071 阅读 · 3 评论 -
c++ 遍历文件夹下的特定文件,并返回文件的完整路径
#include <dirent.h>vector <string> findfile(string path, string ex_endswith, string in_endswith){ DIR* dp; struct dirent* dirp; vector<std::string> filename; if ((dp = opendir(path.c_str())) == NULL) perror("op.原创 2021-06-16 11:19:11 · 734 阅读 · 0 评论 -
C++传递参数给Python
1.总结C++传递参数给Python,需要转换成PyObject *类型。比如,C++的 int 是一个整数,该值占用 8bytes(64位)的存储空间,而一个 python 的 int 实际是一个 PyObject* 指向 24bytes。前 8个bytes是整数,代表引用次数;中间 8bytes是指向 int 类型定义的指针,最后 8bytes是才是这个 int 的值。所以 C++ 和 Python 之间参数互相传递都需要 Python提供的 api。2.案例PyObject* arg1原创 2021-05-10 11:34:43 · 2507 阅读 · 0 评论 -
#ifndef def的作用
记录备忘1.报错信息In file included from /home/zxq/CLionProjects/test_my_inference_onnx/include/detector.cpp:9:0:/home/zxq/CLionProjects/test_my_inference_onnx/include/detector.h:14:7: error: redefinition of ‘class Detector’class Detector { ^~~~~~~~...原创 2021-05-09 17:07:57 · 236 阅读 · 0 评论 -
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
记录备忘.1.完整报错信息Could not find platform independent libraries <prefix>Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]Fatal Python error: initfsencoding: Unable to get the locale encodingModuleNotFoundError: No module named '原创 2021-05-09 15:39:45 · 4100 阅读 · 3 评论 -
C++调用python3.7
环境:Ubuntu18.04 + Clion + python3.7 + C++1. C++主函数tmp.cpp#include <Python.h>#include <iostream>int main(int argc, char *argv[]) { Py_SetPythonHome(L"/home/zxq/anaconda3/envs/onnx"); Py_Initialize(); //判断初始化是否成功 if(!Py_I原创 2021-05-07 15:10:00 · 212 阅读 · 0 评论 -
python和c++实现 不改变长宽比缩放图片
python和c++实现,保持长宽比缩放图片。原创 2020-10-18 09:49:53 · 1385 阅读 · 1 评论 -
C++ 05 struct和class区别
在C++中 struct 和 class唯一的区别就是默认的访问权限不同,struct默认访问权限是public;class默认访问权限是private.原创 2020-06-30 23:21:30 · 140 阅读 · 0 评论 -
C++ 04 函数重载,函数重写,函数重定义
1. 函数重载条件:(1)同一个作用域下,函数名相同;(2)函数的参数列表不同,包括参数列表的个数、或者类型、或顺序不同。使用场景:同一个类中,有多个重载方法,根据传入参数列表的不同,调用不同的方法。比如add(int a, int b), add(double a, double b)2. 函数重写(覆盖)条件:(1)在不同作用域下,基类和子类,函数名相同;(2)函数的参数列表相同,即子类和基类函数完全相同。使用场景:多个不同的子类,重写了父类的虚函数,这样可以根.原创 2020-06-30 22:52:41 · 206 阅读 · 0 评论 -
C++ 03指针和引用-值交换方法对比
#include<iostream>using namespace std;void swap_by_pointer(int *p, int *q){ int temp = *p; // p指向的变量就是主函数的a变量,*p == a,所以操作的是同一个变量 *p = *q; *q = temp;}void swap_by_reference(int &p, int &q){ int temp = p; // 这里的p是主函数里的a别名,操作的是同一.原创 2020-06-29 23:25:01 · 205 阅读 · 1 评论 -
C++ 02内存4区
1. 总体情况/* C++程序执行时,将内存大致划分成4个分区: 1 代码区:存放函数体的二进制代码,由操作系统进行管理; 2 全局区:存放全局变量、静态变量、字符串常量、全局常量; 3 栈区:由编译器自动分配释放,存放函数的参数值、局部变量等; 4 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。 内存分区意义: 不同区域存放的数据,赋予了不同的生命周期。 1.1 程序运行前 即在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域 a 代码.原创 2020-06-28 23:15:54 · 147 阅读 · 0 评论 -
C++ 01常量指针和指针常量、数组指针和指针数组、引用和指针,结构体数组和结构体指针,常量引用
1. 常量指针、指针常量int main(){ // 1,常量指针,const修饰指针,指针指向的值不可以改 int a = 10; int b = 10; const int * p = &a; // *p = 20; // 错位 // p = &b; // 正确 // 2,指针常量,const修饰常量,指针的指向不能变 int * const p2 = &a; // 指针常量,*p不能改 // *p2 = 100; // 正确 // p2 = .原创 2020-06-27 18:19:26 · 414 阅读 · 0 评论 -
leetcode 104 二叉树的最大深度(c++和python)
题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。C++代码:/** * Definition fo...原创 2018-11-28 11:15:28 · 148 阅读 · 0 评论 -
leetcode 31 下一个排列(c++和python)
一,题目描述:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3→1,3,23,2,1→1,2,31,1,5→1,5,1二,解题思路:参考思路:网上看来一...原创 2018-12-12 15:49:41 · 215 阅读 · 1 评论 -
leetcode 118 杨辉三角 (c++和python)
题目描述:给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]解题思路:观察发现。二维数组的值可分为两种情况:边界值为1,中间值 由左上加上右上。二...原创 2018-12-05 16:52:09 · 844 阅读 · 0 评论 -
leetcode 119 杨辉三角 II (c++和python)
题目描述:给定一个非负索引k,其中k≤33,返回杨辉三角的第k行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]解题思路:观察发现。二维数组的值可分为两种情况:边界值为1,中间值 由左上加上右上。题目k的取值范围[0,33], 所以先求出行数为k+1的二维矩阵,即[0, 1, 2, ..., k] ,再返回第k...原创 2018-12-05 17:25:05 · 499 阅读 · 0 评论 -
leetcode 101 对称二叉树(c++和python)
题目描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3]则不是镜像对称的: 1 / \ 2 2 \ \ 3 3解题思路:递归法。判断当前...原创 2018-11-28 10:30:18 · 381 阅读 · 0 评论 -
leetcode 100 相同的树 (c++和python)
题目描述:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: ...原创 2018-11-27 16:05:36 · 160 阅读 · 0 评论 -
leetcode 88 合并两个有序数组 (c++和python)
题目描述:给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3...原创 2018-11-27 15:24:21 · 216 阅读 · 0 评论 -
leetcode 83 删除排序链表中的重复元素 (c++和python)
题目描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3C++代码:/** * Definition for singly-linked list. * struct Li...原创 2018-11-27 10:39:25 · 123 阅读 · 0 评论 -
leetcode 110 平衡二叉树 (c++和python)
题目描述:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回true。示例 2:给定二叉树[1,2,2,3,3,nu...原创 2018-11-30 11:13:19 · 286 阅读 · 0 评论 -
leetcode 将有序数组转换为二叉搜索树
题目描述:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / ...原创 2018-11-30 10:14:56 · 265 阅读 · 0 评论 -
leetcode 121 买卖股票的zuijia时机 (c++和python)
题目描述:给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 =...原创 2018-12-06 10:13:37 · 140 阅读 · 0 评论 -
leetcode 122 买卖股票的zuijia时机 II (c++和python)
题目描述:给定一个数组,它的第i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时...原创 2018-12-06 11:24:57 · 143 阅读 · 0 评论 -
C++ 三大特征:封装、继承、多态
C++ 完全支持面向对象的程序设计,包括面向对象开发的三大特征:封装 继承 多态一、封装封装:把数据和操作数据的函数绑定在一起,通过设置私有成员,限制对数据的访问。类包含私有成员(private)、保护成员(protected)和公有成员(public)成员。默认情况下,在类中定义的所有成员都是私有的,这样才能保证良好的封装性。class Box{ public: ...原创 2019-04-11 10:36:40 · 1012 阅读 · 0 评论 -
leetcode 全排列
一,题目描述:给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]二,解题思路: 采用不断交换两个位置的方法获得所有的排列,即以某个点为开始点,依次和后面的做交换,因为没有重复项,所以得到的序列都是不同的...转载 2019-01-15 16:57:31 · 1908 阅读 · 0 评论