
c++
qq_43525260
这个作者很懒,什么都没留下…
展开
-
STL容器删除迭代器问题分析
删除容器迭代器是一个需要斟酌的动作,务必谨慎否则会带来意想不到的危险,下我们就一起分析分析两大类容器删除迭代器的正确开启方法:转载于:添加链接描述导致迭代器失效的原因一般有两种:1、迭代器对象已经变成了“野指针”,对其进行*,++,–都会引起程序内存操作异常。2、迭代器对象所指向的内容已经不是所期望的内容,也被称为迭代器失效。顺序容器(如:vector,string,deque和list)关联容器(如:set,map)两种容器在使用erase()函数时是有不同的。1.顺序容器的erase函数转载 2021-10-26 08:48:49 · 420 阅读 · 0 评论 -
光流法追踪动态目标算法,上一篇博客中的算法的改进版本
// Farneback dense optical flow calculate and show in Munsell system of colors// Author : Zouxy// Date : 2013-3-15// HomePage : http://blog.youkuaiyun.com/zouxy09// Email : zouxy09@qq.com// API calcOpticalFlowFarneback() comes from OpenCV, and this// 2原创 2021-03-25 16:26:41 · 453 阅读 · 0 评论 -
利用opencv中的LK光流实现动态目标跟踪
注意了 :本代码是在《OpenCV3编程入门》书籍中代码的基础上进行改进的,从而实现对一文件夹下的数据集图片中的动态目标进行跟踪,代码如下,包含了部分注释:// 程序描述:来自OpenCV安装目录下Samples文件夹中的官方示例程序-利用光流法进行运动目标检测// 描述:包含程序所使用的头文件和命名空间#include <opencv2/video/video.hpp>#include <opencv2/highgui/highgui.hpp>#include <原创 2021-03-23 14:27:45 · 658 阅读 · 2 评论 -
c++实现文件的读、写,具体使用,使用了一个案例,即将一个.log后缀的文件的内容,进行了读,并且将需要的内容重新写入到另外一个.log文件,具体操作见图
原始.log文件:修改后的.log文件:简单来说,就是我把所有重复比较以及相同图像进行比较的图像对信息给删除了,保留不重复的比较信息以及非同一张图像保留的情况,具体代码在下面给出,涉及了基本的文件读写操作,以及string字符串比较大小的操作!!!!!!#include<iostream>#include<fstream>#include<sstream>#include<string>using namespace std;//如果s1大原创 2021-02-04 14:37:08 · 292 阅读 · 0 评论 -
使用c++和opencv将某一文件夹下的图片保存并且重命名至目标文件夹中,其中涉及到生成固定位数的命名的技巧,例如 001 002 003 004...
#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(int argc, char *argv[]){ String path = "D:\\Whhuo-Siamese-pytorch-master\\Siamese-pytorch\\datasets\\temp\\";//打开源文件夹 vector<String> v;原创 2021-02-03 18:32:45 · 522 阅读 · 0 评论 -
使用opencv3.x读取某文件夹下的所有图片,并保存奇数张图片到指定的文件夹,环境为windows10 + vs2017 + opencv3
#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(int argc, char *argv[]){ String path = "D:\\迅雷下载\\Images\\Images\\";//打开源文件夹 vector<String> v;//注意类模板的类型为String,不是string glob(path, v)原创 2021-02-02 10:10:26 · 155 阅读 · 0 评论 -
C++.h文件和.cpp文件连接不上 ,1 个无法解析的外部命令
转发自这位老哥 :https://blog.youkuaiyun.com/weixin_40676516/article/details/84643105,调试几天代码,竟然因为在cpp中加了inline而一直没有编译通过,真痛苦,不得不怀疑自己,看了这篇博客,才不由得恍然大悟,感谢博主!!!!解决方法一:同时存在.h和.cpp,cpp中函数已经定义,依旧提示无法解释的外部符号VS中对文件有中表示,可以通过选中.h或.cpp文件,右键,属性–通常–项类型中C/C++标头是针对头文件的,C/C++编译器是针对cp原创 2021-01-17 09:58:31 · 1925 阅读 · 1 评论 -
剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。/** * Definition for singly-lin原创 2020-08-10 22:13:03 · 116 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-原创 2020-08-10 21:16:29 · 99 阅读 · 0 评论 -
剑指 Offer 59 - II. 队列的最大值
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入:[“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_value”][[],[1],[2],[],[],[]]输出: [null,null,null,2,1,2]示例原创 2020-08-09 11:16:17 · 152 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0.min原创 2020-08-08 22:20:47 · 115 阅读 · 0 评论 -
剑指 Offer 39. 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof著作权归领扣网络所有原创 2020-08-08 20:57:36 · 101 阅读 · 0 评论 -
剑指 Offer 15. 二进制中1的个数
请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:00000000000000000000000010000000输出:1解释:输入的二进制串 0000000000000原创 2020-08-08 15:07:46 · 105 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-原创 2020-08-08 11:41:44 · 112 阅读 · 0 评论 -
剑指 Offer 45. 把数组排成最小的数
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”提示:0 < nums.length <= 100说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/probl原创 2020-07-19 22:18:44 · 86 阅读 · 0 评论 -
剑指 Offer 40. 最小的k个数
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:0 <= k <= arr.length <= 100000 <= arr[i] <= 10000来源:力扣(LeetCode)链接:https://lee原创 2020-07-15 23:04:46 · 123 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHead”,“appendTail”,“ap原创 2020-07-13 21:41:55 · 119 阅读 · 1 评论 -
leetcode刷题之旅-155. 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,null,-3,原创 2020-06-23 21:01:03 · 166 阅读 · 0 评论 -
leetcode刷题之旅-232. 用栈实现队列
使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false说明:你只能使用标准的栈操作 – 也就是原创 2020-06-23 20:27:45 · 125 阅读 · 1 评论 -
leetcode刷题之旅-225. 用队列实现栈
使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。你可以假设所有操作都是有效的(例如, 对一个空的栈不原创 2020-06-23 20:05:52 · 183 阅读 · 0 评论 -
leetcode刷题之旅-86. 分隔链表
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/partition-list著作权归领扣网络所有。商业转载请联系官方授权,非原创 2020-06-22 09:33:14 · 134 阅读 · 0 评论 -
leetcode刷题之旅-142. 环形链表 II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:t原创 2020-06-22 08:07:52 · 220 阅读 · 0 评论 -
leetcode刷题之旅-160. 相交链表
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1原创 2020-06-21 10:22:14 · 129 阅读 · 0 评论 -
leetcode刷题之旅-92. 反转链表 II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。原创 2020-06-21 09:04:31 · 121 阅读 · 0 评论 -
leetcode刷题之旅-206. 反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题解参照这个大神的视频,真心不错!!->算法原创 2020-06-21 08:31:46 · 131 阅读 · 0 评论 -
leetcode刷题之旅-69. x 的平方根
实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sqrtx著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题解:抓住一原创 2020-06-10 21:51:49 · 206 阅读 · 0 评论 -
leetcode刷题之旅-66. 加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/plus-one著作原创 2020-06-08 22:12:04 · 166 阅读 · 0 评论 -
leetcode刷题之旅-38. 外观数列
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一个字符串原创 2020-06-07 22:28:48 · 123 阅读 · 0 评论 -
leetcode刷题之旅-35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-inser原创 2020-06-05 22:46:48 · 197 阅读 · 0 评论 -
ubunto18.04 opencv多版本共存问题
以前的那篇关于多版本共存的博客就不要看了,直接看这一篇吧,以前的那一篇应该是有问题!!!!!!1、首先到官网下载opencv3.4的源码包,然后解压缩2、先安装依赖//依赖库sudo apt-get updatesudo apt-get install cmakesudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-原创 2020-06-05 10:31:30 · 1507 阅读 · 1 评论 -
leetcode刷题之旅-27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,3,0,4,2]原创 2020-06-04 22:01:09 · 142 阅读 · 0 评论 -
leetcode刷题之旅-21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题解: 注释写的比较清楚了!!!!另外附上B站的视频原创 2020-06-04 21:08:15 · 148 阅读 · 0 评论 -
leetcode刷题之旅-28. 实现 strStr()
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba”输出: -1说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对原创 2020-06-03 21:27:30 · 138 阅读 · 0 评论 -
leetcode刷题之旅-14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-common-prefix著作权归领扣网络所有。商业原创 2020-06-03 21:02:05 · 126 阅读 · 0 评论 -
leetcode刷题之旅-26. 删除排序数组中的重复项
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的原创 2020-06-02 22:37:48 · 183 阅读 · 0 评论 -
leetcode刷题之旅-13. 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况原创 2020-06-01 21:06:21 · 166 阅读 · 0 评论 -
leetcode刷题之旅-9. 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?来源:力扣(LeetCode)链接:https://leetcode-cn.原创 2020-06-01 19:03:04 · 236 阅读 · 0 评论 -
leetcode刷题之旅-7. 整数反转
题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-integer原创 2020-05-31 22:24:19 · 178 阅读 · 0 评论 -
leetcode刷题之旅-20. 有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true来源:力扣(LeetCode)原创 2020-05-31 20:39:28 · 115 阅读 · 0 评论 -
leetcode刷题之旅-面试题 10.01. 合并排序的数组
题目描述:给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。示例:输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]说明:A.length == n + m来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sorted-merge原创 2020-05-30 14:43:26 · 147 阅读 · 0 评论