
c++
liangbaqiang
这个作者很懒,什么都没留下…
展开
-
【C++】判断vector是否为另一个vector的子集
C++不像python自带issubset方法,用来判断一个元素是否为另一个元素的子集,需要自己写一个,但是也不能对vector1的一个一个元素判断是否都属于vector2,这个子集最基本的定义去判断,这样做时间复杂度太大了,如果vector1的长度为m,vector2的长度为n,那么时间复杂度将去到O(m*n)之久,元素一多,这很致命,可以用如下的方式去判断vector是否为另一个vector的子集:#include "iostream"#include "vector"#include "algo转载 2021-02-26 16:40:13 · 2209 阅读 · 0 评论 -
【C++】判断元素是否在vector中,对vector去重,两个vector求交集、并集
#include <iostream>#include <vector>#include <algorithm> //sort函数、交并补函数#include <iterator> //求交并补使用到的迭代器using namespace std;//打印容器vectorvoid print_vector(vector<int> v){ if(v.size()>0){ cout<<"{";转载 2021-02-26 16:39:07 · 592 阅读 · 0 评论 -
c++ 排序后如何获取索引排列
给定一个数组arr = {5,16,4,7},我们可以通过sort(arr,arr sizeof(arr)/ sizeof(arr [0]))进行排序。所以现在阵列arr = {4,5,7,16},排序数组的置换索引为{2,0,3,1}。换句话说,原始数组中的arr [2]现在是位置0中排序数组中的最小元素但是如果想返回排序索引表就需要额外加点东西了,a是需要排序列表,b是原始索引表,实质是根据a的value去对b进行重排列。这个[&a](int i, int j)->bool{re原创 2021-02-26 11:47:25 · 4838 阅读 · 1 评论 -
c++日志管理
VC-Logger 是一个简单易用的 C++ 程序通用日志组件。设计时着重考虑三个方面:功能、可用性和性能。Logger.h/* * Copyright Bruce Liang (ldcsaa@gmail.com) * * Version : 2.0.3 * Author : Bruce Liang * Website : http://www.jessma.org * Project : https://github.com/ldcsaa * Blog : http://www.cnb原创 2021-01-07 16:22:26 · 472 阅读 · 0 评论 -
C++文件操作——获取当前工作路径的几种方法
1.采用GetCurrentDirectory,用于获取当前进程的当前目录2.getcwd获取当前工作目录,类似上一方法#include <direct.h> #include <stdio.h> char buffer[MAX_PATH]; getcwd(buffer, MAX_PATH); 运行得到"D:\<项目名>\<项目名>"...转载 2021-01-07 14:50:20 · 33086 阅读 · 0 评论 -
C++头文件和源文件
//a.h文件void foo();//a.c文件#include “a.h” //我的问题出来了:这句话是要,还是不要?void foo(){return;}//main.c文件#include “a.h”int main(int argc, char *argv[]){foo(); return 0;}针对上面的代码,请回答三个问题:a.c 文件中的 #include “a.h” 这句话是不是多余的?为什么经常见 xx.c 里面 include 对应的 xx.h?原创 2020-12-25 15:16:09 · 289 阅读 · 0 评论 -
vs的各种目录设置
好麻烦的设置关系,经常忘记,转载一个 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件夹以及解决方案和各个项目对应的配置文件包含关系,假设新建一个项目ssyy,解决方案起名fangan,注意解决方案包括项目,此时生成的最外层目录为fangan代表整个解决方案的内容都在这个文件夹内。在这个fangan文件夹内包含有fangan.sln的解决方案配置文件和一个ssyy文件夹,ssyy文件夹代表整个ssyy项目的所有内...转载 2020-12-23 17:26:31 · 3192 阅读 · 0 评论 -
OpenCV图像旋转无缺失算法实现
旋转后的新图像包含了原图像所有内容,没有存在像素缺失的情况python版:import cv2import numpy as npfrom math import *img=np.ones(shape=(100,200,3),dtype=np.uint8)img[:,:,0]=255'''对图像进行旋转的函数'''def rotate(image,angle): height, width,channels=image.shape #变换后新图像的大小是原图像旋转..原创 2020-11-16 16:10:43 · 827 阅读 · 0 评论 -
opencv读取海康相机
海康的摄像头是用rtsp网口通信的,只要调用opencv的videocapture类即可,里面包含网口的通信协议,具体的协议为:“rtsp://用户名:密码@ip地址/h264/ch1/main/av_stream”需要注意的一点是,当你知道了海康的ip地址后,需要将你电脑的ip地址改为和它同一个网段即可,以我的为例,我的摄像头ip是192.168.1.64,那么我的本地ip就改为192.168.1.63,这样便可以达成局域网的效果。。。#include <opencv2\opencv.hpp&g原创 2020-11-12 14:34:07 · 2034 阅读 · 0 评论 -
OpenCV+海康威视摄像头的实时读取
OpenCV 4.4版本一、海康威视SDK下载以及VS工程配置:下载海康威视SDK:下载SDK2. 新建控制台工程:将工程模式调至Release|X64模式在工程目录下新建一个命名为3rd_x64的文件夹存放三方库,再在此文件夹中新建一个名为HC_vision_SDK_x64库文件夹,并新建include文件夹和lib文件夹(如下图所示),其中的文件分别来自于我们下载的64位SDK中的头文件(CH-HCNetSDK(Windows64)V5.3.1.22_build20170909\头文原创 2020-11-12 14:17:39 · 5358 阅读 · 3 评论 -
数据类型转换
C++ 将string转换成char字符串我们经常会使用C和C++的混合编程,在某些情况下,需要将C++的string,转换成char 的字符串。下面说两种可行的方法,作为总结。data();如:string str=“abc”;charp=(char)str.data();2.c_str();如:string str=“adcd”;char p=(char)str.c_str();c++中char转换为string类型//1、构造函数里有个string(size_t,char)原创 2020-11-11 10:47:35 · 184 阅读 · 0 评论 -
win api 读写配置文件
#include <atlstr.h>#include <Windows.h>#include <iostream>#include <string>void operate_config() { LPTSTR lpPath = LPTSTR(new char[MAX_PATH]); strcpy(lpPath, ".\\IniFileName.ini"); WritePrivateProfileString("LiMing", "Sex原创 2020-11-06 15:29:30 · 343 阅读 · 0 评论 -
多线程,两个线程写,一个线程读
多线程,两个线程写,一个线程读,读完删除,(读完删除,再写(注释掉的部分),当两个写的线程没有写,就读的线程一直读写删)1、采用thread类#include <iostream> #include <thread> #include <Windows.h> #include <mutex> using namespace std;mutex mu; //线程互斥对象 struct A1{ int a; strin原创 2020-11-06 13:59:49 · 1657 阅读 · 0 评论 -
指针或者引用作为形参
作者:573xmcgcg链接:https://www.zhihu.com/question/30000523/answer/46387415来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。使用指针或者引用作为形参是为了解决按值传递可能导致的问题。所以这里再次讲一下使用指针,引用和值作为形参所导致的结果。C++教科书都会用一个交换两个变量的值的函数来举例:void swap(int a, int b); //使用指针和引用的情况下形参类型分别为int和int&{原创 2020-11-03 09:43:50 · 1875 阅读 · 4 评论 -
Windows下编译OpenCV+OpenCV_Contrib
Windows下编译OpenCV+OpenCV_Contrib 0 OpenCV及OpenCV_Contrib1 准备工作2 CMake生成VS2017工程2.1 OpenCV4.0.1 编译配置2.2 OpenCV_Contrib4.0.1编译配置2.3 生成工程 3 VS2017生成解决方案及安装文件4 VS2017配置OpenCV开发环境4.1 配置环境变量4.2 VS2017工程包含(include)目录的配置4.3 VS2017工程库(lib)目录的配置4.4 链接库的配置 5 测试代.原创 2020-10-20 13:36:38 · 618 阅读 · 0 评论 -
【编程实例】 (在Visual Studio中使用C++创建和使用DLL)
什么是DLL(动态链接库)? DLL是一个包含可由多个程序同时使用的代码和数据的库。例如:在Windows操作系统中,Comdlg32 DLL执行与对话框有关的常见函数。因此,每个程序都可以使用该DLL中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。这篇文章的目的就是让你一次性就能了解和掌握DLL。 为什么要使用DLL(动态链接库)? 代码复用...原创 2020-10-19 13:27:39 · 722 阅读 · 0 评论