c++
csliudh
这个作者很懒,什么都没留下…
展开
-
Android ndk环境中 C++ 在多线程中调用java的回调函数
在 c++中开启了异步的线程之后,如果通过 FindClass 和 GetStaicMethodID 去获取方法的id然后进行调用的话会抛出异常。为了能在另外的线程中调用Java的方法,需要在 .so 被加载时在 JNI_OnLoad 中提前保存 JavaVM 的地址到全局变量中,并且提前解析类和方法的id也都保存到全局变量中,等到异步线程开启之后,根据全局变量中存储的类和方法的id进行调用。...原创 2021-09-14 17:05:40 · 858 阅读 · 0 评论 -
C++ 跨平台生成动态链接库
编写动态链接库给别人用的时候,在Mac ,Linux 以及 windows 上的处理策略是不同的。其实就是 gcc(clang) 与 vs 的差别。一般大家都会用一段宏定义来解决这种跨平台的问题。废话不多说,直接上代码:#ifndef CROSS_PLATFORM_LIBRARY_EXAMPLE_LIBRARY_H#define CROSS_PLATFORM_LIBRARY_EXAMPLE_LIBRARY_H#ifdef _MSC_VER //用于判断是否是 vs 平台 #define原创 2020-11-06 17:32:58 · 2156 阅读 · 0 评论 -
C++17获取目录下所有的图像文件路径
C++17支持了更多的文件操作,这些更加方便了,今天尝试了一下递归读取一个目录下所有的图像文件的操作。直接上代码:#include<iostream>#include<vector>#include<filesystem>using namespace std;using namespace std::filesystem;// 检查一个路径是否是目录bool checkIsDir(const string &dir) { if (!原创 2020-09-22 15:41:43 · 1016 阅读 · 0 评论 -
Leetcode每日一道 -- 两数之和
题目链接: https://leetcode-cn.com/problems/two-sum/description/题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], targe...原创 2018-11-21 23:52:08 · 169 阅读 · 0 评论 -
c++对文件进行操作之遍历双层文件结构
c++对文件进行操作之读取文件夹下面的图片名称原创 2017-10-31 17:56:54 · 323 阅读 · 0 评论 -
leetcode 535. Encode and Decode TinyURL
这个题目如果自己写一个算法的话确实很难,但是这个是没有什么要求的,因此就简单多了。最简单的就是不做任何处理,直接返回class Solution {public: // Encodes a URL to a shortened URL. string encode(string longUrl) { return longUrl; }原创 2017-10-16 18:29:52 · 209 阅读 · 0 评论 -
leetcode 657. Judge Route Circle
这个题目比较简单,设置x,y两个变量用来标识横坐标与纵坐标即可。class Solution {public: bool judgeCircle(string moves) { int x=0,y=0; for(int i=0;i<moves.size();i++) { if(moves[i]=='U')原创 2017-10-16 17:54:05 · 161 阅读 · 0 评论 -
leecode 5. Longest Palindromic Substring
这个题目刚开始的想法是用暴力方法求解,结果超时了,很气,就已经成功完成92个用例了,就差一个了。代码如下(这种方法是最耗时间的,时间复杂度是O(n^3)):class Solution {public: string longestPalindrome(string s) { int start=0,maxlength=1; int length=s.原创 2017-10-25 12:21:48 · 141 阅读 · 0 评论 -
c++对文件进行操作之创建特定的文件结构
首先,介绍如何知道一个文件是否存在。//该函数可以判断某个文件或者文件夹相应的模式是否成立,如果成立则返回0,否则返回-1#includeint _access(const char *path,int mode);mode可以取值为0(该文件是否存在)、2(该文件是否可读)、4(该文件是否可写)、6(该文件是否可读写)接着创建或者删除文件或者文件夹:#includeint原创 2017-11-01 18:20:42 · 288 阅读 · 0 评论 -
比特平面分层
灰度图是一个由像素组成的矩阵,目前大部分的灰度图中的像素用1B存储即8bit,比特平面分层的意思是将所有像素的相同比特拿出来单独组成一个矩阵,这样就会有八个矩阵。根据冈萨雷斯的《数字图像处理》,高比特部分的图像所含信息量大,而低比特部分所含信息量少。这样的理论对于以后做计算机视觉或者图像压缩很有帮助。代码如下:// 比特平面分层.cpp: 实现灰度图的比特平面分层//#include "原创 2017-10-24 16:35:58 · 5837 阅读 · 0 评论 -
leetcode 4. Median of Two Sorted Arrays
这个题目我的思路是从两个数组的开始位置向后找第(nums1.size()+nums2.size())/2和第(nums1.size()+nums2.size()-1)/2大的元素,如果总元素个数是奇数返回第(nums1.size()+nums2.size())/2大的元素即可,否则求一个均值。class Solution {public: double findMedianS原创 2017-10-24 15:35:58 · 134 阅读 · 0 评论 -
opencv3实现简单的数字图像识别(KNN)
正在用opencv3做一个数字图像识别的小项目,要用到KNN,但是不熟悉它的接口,因此,借鉴了大佬的博客,基本照搬了代码,代码如下:大佬的链接如下:http://www.cnblogs.com/denny402/p/5033898.html// knnrecognizenum.cpp:使用knn识别手写数字//#include "stdafx.h"#include#include转载 2017-11-02 22:21:54 · 9177 阅读 · 6 评论 -
基于opencv3的手写板
基于opencv3的手写板、画图板(c++版本)转载 2017-11-04 10:21:44 · 684 阅读 · 0 评论 -
输入n输出1/3+3/5+5/7+······+n/(n+2)的分数形式(n<40)
#include "stdafx.h"#include#include#includeusing namespace std;int main(){ long long fenzi, fenmu; int n,start; while (scanf("%d", &n)!=EOF) { time_t begin=clock(); fenmu = 3; fenzi = 1;原创 2017-11-05 10:05:17 · 1592 阅读 · 0 评论 -
Leetcode每日一道 -- 两数相加
题目链接: https://leetcode-cn.com/problems/add-two-numbers/description/题目描述:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数...原创 2018-11-22 13:12:20 · 231 阅读 · 0 评论 -
Leetcode每日一道 -- 无重复字符的最长子串
题目链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/description/题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为...原创 2018-11-23 23:23:50 · 201 阅读 · 0 评论 -
Leetcode每日一道 -- 整数反转
今天有点儿偷懒,选择刷了最简单的一个入门题。直接上代码class Solution {public: int reverse(int x) { long long res=0; while(x!=0) { res=res * 10 + x % 10 ; x /= 10; ...原创 2018-11-28 23:07:21 · 163 阅读 · 0 评论 -
Leetcode每日一道--三数之和
题目描述:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。基本思路 :最简单的思路就是使用 三层循环,但是时间会超。我的想法是先对nums做一个排序,接着第一个元素从[ 0 , length-2 ] 寻找,第二个元素和第三个元素利用双指针方法找,这样做复杂度就可以达到...原创 2018-12-18 22:52:54 · 346 阅读 · 0 评论 -
leetcode每日一刷--跳跃游戏
题目描述: 给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引...原创 2019-01-05 19:06:39 · 192 阅读 · 0 评论 -
Leetcode每日一刷--矩阵置零
题目描述如下:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]这个题目要求使用原地算法,尽量使用O(1) 空间。这个题目的难点是前面的元素为0导致后面的元...原创 2019-01-06 18:14:35 · 380 阅读 · 2 评论 -
查找数组中第一个大于/大于等于的元素下标
这个问题应该肯定使用二分查找,时间复杂度是O(logn)。比较麻烦的一点在于如何当前这个数是不是第一个大于等于这个数的下标,需要我们用 res 来存放最近的满足条件的那个数,这样left或者right变化就不怕了。也可以直接借助标准库中的 lower_bound 和 upper_bound() ,详细见https://blog.csdn.net/qq_40160605/article/detail...原创 2019-08-20 20:59:52 · 6377 阅读 · 1 评论 -
leetcode 617. Merge Two Binary Trees
这个题目本质是对两棵树做遍历,同时生产一棵新的树,树的节点值就是原来两棵树节点值的和刚开始我的思路如下:class Solution {public: TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) { if(t1==NULL && t2==NULL) { return NU原创 2017-10-15 13:53:38 · 285 阅读 · 0 评论 -
leetcode 461. Hamming Distance
这个题目比较简单,一边转化为二进制数,一边比较每一位数字是否相等。class Solution {public: int hammingDistance(int x, int y) { int length=0; while(x!=0 || y!=0) { if(x%2!=y%2)原创 2017-10-15 13:10:10 · 137 阅读 · 0 评论 -
opencv3.2实现直方图
灰度直方图要用到函数calcHist(),该函数有三种重载形式。// 灰度直方图.cpp: 画出灰度图像的灰度直方图//#include "stdafx.h"#include#include#includeusing namespace std;using namespace cv;int main(){ Mat srcImage = imread("face.jpg", 0);转载 2017-10-11 20:31:34 · 828 阅读 · 0 评论 -
17. Letter Combinations of a Phone Number
这个题目的难点主要在循环这部分,感觉temp省了不少事。另外:strs.swap(temp)也是头一次知道这个用法。不过O(n3)居然这次么有超时,很神奇class Solution {public: vector letterCombinations(string digits) { vector strs; if(digits.size()==0)转载 2017-10-28 12:43:54 · 138 阅读 · 0 评论 -
leetcode 523. Continuous Subarray Sum
这个题目自己刚开始以为用暴力求解是最简单的方法,最优方法是动态规划,没想到还有这种解法,又好理解又快。基本思路是这样:class Solution {public: bool checkSubarraySum(vector& nums, int k) { int length=nums.size(); if(length<2)转载 2017-10-20 11:38:17 · 174 阅读 · 0 评论 -
对顺序表的两个操作
今天帮老师判数据结构作业,有两个顺序表的题目感觉很有意思,同时又感觉这两个题都很像,因此就写成代码试了一下,虽然不难,但是也很有启发。题目要求是删除一个非降序顺序表中所有的重复元素,并且使空间复杂度为O(1).另一个题目是删除顺序表中值的范围在[x,y]之间的所有数,这个顺序表可以是乱序的,但是也要求算法空间复杂度为O(1).代码如下:/*本文档实现两个基本的操作:去除非降序顺序表中的原创 2017-10-19 18:59:53 · 654 阅读 · 0 评论 -
求解一元二次方程、float与0比较大小
昨天帮同学看题,发现了知识上的一个重大缺漏,原来float和double是不能和0直接比较大小的,长知识了。/*输入一元二次方程的a,b,c求根*/#include#includeusing namespace std;const float EPSION=0.000001; //定义最小的floatint main(){ float a,b,c; float delta,sh原创 2017-10-27 13:24:34 · 569 阅读 · 0 评论 -
leetcode 14. Longest Common Prefix
这么简单的一个题目居然总是出错,看来功力太浅了class Solution { public: string longestCommonPrefix(vector& strs) { string prefix=""; int i=0; if(strs.size()==1) return strs[0]; while(strs.size()>0) //防止空的字符串数组 { for(int原创 2017-10-26 16:46:07 · 116 阅读 · 0 评论 -
16. 3Sum Closest
这个题目确实不知道这种解法,看来以后遇到问题得多思考这种 指针挪动 的方法了,加油class Solution {public: int threeSumClosest(vector& nums, int target) { int length=nums.size(),res=nums[0]+nums[1]+nums[2]; sort(nums.b转载 2017-10-27 12:48:58 · 112 阅读 · 0 评论 -
opencv 直方图对比
直方图对比的函数是compareHist(),传入的参数有三个,前两个为直方图,第三个为采用什么方法计算相似度#include "stdafx.h"#include#include#includeusing namespace std;using namespace cv;int main(){ Mat srcImage1, srcImage2; srcImage1 = im原创 2017-10-11 20:34:40 · 216 阅读 · 0 评论 -
leetcode 130 Submission Details
今天刷的这题目不难,但是惯性的把它想到了图的遍历上面,忽略了问题的本质是从矩阵的边框入手的。说明分析问题的能力差的还远,继续吧class Solution {public: void solve(vector>& board) { int rows=board.size(); if(rows==0) return ;转载 2017-10-21 20:36:09 · 171 阅读 · 0 评论 -
leetcode 665. Non-decreasing Array
这个题目好像不难,但是死都理解不了,自己好水啊。。。虽然这个题目主要是掌握特例:[2,5,3,4]. 5后面虽然有3,4都比5小,但是通过修改5为3可以实现目标。因此比较的时候不仅要考虑和前一个元素进行比较,还要和前两个进行比较(必须满足i-2>=0)转载 2017-10-23 20:31:42 · 117 阅读 · 0 评论 -
c++对文件进行操作之读取文件夹下面的图片名称
正在做一个简单的手写数字识别的东西,需要进行预处理,划分训练集和数据集,发现用c++操作文件完全不会,都是泪,加油建议先看一下这篇文章对 struct _finddata_t的介绍,这是链接:http://blog.csdn.net/wzhwho/article/details/6372353#include#includeusing namespace std;const cha原创 2017-10-31 16:09:46 · 5932 阅读 · 6 评论 -
leetcode 8. String to Integer (atoi)
这个题目很奇怪,按理来说应该不难,但是有很多的特殊情况需要考虑,各种乱七八糟的特例。"+2","-156"," -9","+-2","-+3"等类似的情况,所以多错几次来试错还是有必要的。class Solution {public: int myAtoi(string str) { long result = 0; int flag = 1; for(i原创 2017-10-14 09:25:29 · 122 阅读 · 0 评论 -
leetcode 3. Longest Substring Without Repeating Characters
这个题目刚开始想用动态规划来解决,但是水平不够,写不出来。用暴力求解的话,时间复杂度为O(n^3),肯定会超时,因此我想到了STL中的集合用来判断某个字符是否重复出现,这样的话时间复杂度大概可以达到O(n^2*logn),结果显示确实时间代价大,大概450ms,差一点就gg了。代码如下:class Solution {public: int lengthOfLongestSubstr原创 2017-10-13 20:18:32 · 116 阅读 · 0 评论 -
leetcode 15.3 Sum
刚开始想的方法是暴力求解,但是时间会超时,进行了改进也依然超时。class Solution {public: vector > threeSum(vector& nums) { int length=nums.size(); int a,b,c; vector > res; sort(nums.begin(),nums原创 2017-10-13 10:22:07 · 151 阅读 · 0 评论 -
修改windows控制台的编码格式为utf-8
我今天写的c++代码里有汉字结果运行显示了错误,发现是utf-8在控制台窗口显示错误造成的。因此我决定修改控制台的默认编码在搜索框中输入regedit-->打开注册表-->点击 HKEY_CURRENT_USER-->点击 Console-->点击 HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe--&...转载 2017-10-30 16:04:53 · 3271 阅读 · 0 评论 -
模板匹配
日常opencv,这里用了女神的图片// 模板匹配.cpp: 用一个模板滑动窗口去匹配某张图片的区域//#include "stdafx.h"#include#include#includeusing namespace cv;using namespace std;#define WIN_NAME1 "【原始窗口】"#define WIN_NAME2 "【效果窗口】"M原创 2017-10-12 21:47:54 · 315 阅读 · 0 评论 -
opencv访问元素的几种方法
今天刚看了一个公开课,学到了更多的访问像素的方法。1、借助at原创 2017-10-29 21:44:14 · 716 阅读 · 0 评论