C++基础
时光机゚
为了我的名字~。~
展开
-
【C++基础】头文件定义问题导致的重定义问题
定义语句放在头文件可能会产生重定义问题,所以尽量定义语句不要放在头文件中。 多个不同文件引用同一个头文件,或者同一个文件多次引用一个头文件,就可能会产生重定义问题。因为每次包含某个头文件的时候,相当于将该文件下的局部变量或者内联函数进行了全局化。因此,多次包含同一个头文件就可能会产生重定义问题;出现问题的代码编号可能有C2084,函数" "已有主体以及C2374,重定义;多次初始化;解决方法也很简单,添加头文件保护符就行:#ifndef tmp_H#define tmp_H/*代码在原创 2022-03-22 20:11:36 · 4238 阅读 · 2 评论 -
getAffineTransform函数C++和python输出不一致
C++的OpenCV版本为4.1.0,python的OpenCV版本为4.4.0;问题表现为,getAffineTransform函数,两个版本的输出不一致;但发现与warpAffine配套使用后,表达的效果和数值一致。测试代码bool test_getAffineTransform(){ Mat img; img = imread("E:\\test.jpg"); int height, width; height = img.rows; width = img.cols; Poi原创 2021-04-23 11:54:16 · 718 阅读 · 1 评论 -
opencv写视频相关问题
写视频初始化Size size = Size(width, height);VideoWriter writer;writer.open(dstPath, cv::VideoWriter::fourcc('M', 'J', 'P', 'G'), capture.get(cv::CAP_PROP_FPS), size, true);写入帧writer.write(tmpCropImg);最后要releasewriter.release();其中,初始化的时候,容易出现一些问题。我使用的是原创 2021-03-26 15:37:27 · 312 阅读 · 0 评论 -
C++操作,opencv的resize函数src和dst相同,改变Size,不改变表示。
C++操作,opencv的resize函数定义为 resize(src, dst, cv::Size(width, height), 0, 0, interpolation);src和dst相同的话,即操作为resize(src, src, cv::Size(width, height), 0, 0, interpolation);会使得dst的size变为width*height,但show出来的时候,大小仍旧和src一样,并未改变;...原创 2021-03-25 21:18:32 · 1314 阅读 · 0 评论 -
C++操作,对opencv的Mat进行切片
类似于python的切片操作的简化版本,cv::Mat的操作中,如果使得frame(cv::Rect(x, y, width, height)),则可以得到从坐标(x, y)开始,宽为width,长为height的“切片”;原创 2021-03-25 20:53:50 · 2572 阅读 · 1 评论 -
opencv函数随手笔记
convertTo函数 实现的功能为:B=a∗A+bB = a * A + bB=a∗A+b 其中,a,b为标量,A,B 为 Mat; 实现代码:A.convertTo(B, CV_32F, a, b)split函数 实现的功能为:分离图片(Tensor)为通道(数组); 实现代码:void split(const Mat& src, Mat* mvbegin);s...原创 2019-06-21 10:29:20 · 146 阅读 · 0 评论 -
【Codevs】1214-线段覆盖
题目描述: 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数。有些线段之间会相互交叠或覆盖。请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点。所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分)。输入描述: ...原创 2019-02-26 00:47:29 · 227 阅读 · 0 评论 -
【CodeVs】高精度计算
高精度乘法计算题目: 给出两个正整数A和B,计算A*B的值。保证A和B的位数不超过500位。思路: 主要记住计算乘法时,竖式计算每一个值对应的坐标位置,如数字A和B的第一位相乘,则A的第一位就在第一个位置,第二位就在第二个位置;数字A和数字B的第二位相乘,A的第一位在第二个位置;以此类推;最后再将每个位置上的数字进位到单个数字。#include &lt;iostream&gt;#i...原创 2019-03-01 01:14:05 · 301 阅读 · 0 评论 -
C 语言随笔记录
memcpy 函数#include <string.h>void * memcpy (void * dest, const void * src, size_t n); 该函数从 src 地址起,开始拷贝 n 个字节的数据到 dest。若 dest 有数据,则覆盖。char * target = (char*) malloc (sizeof(char)*N);memcpy...原创 2019-01-08 20:00:04 · 159 阅读 · 0 评论 -
C++基础之 ::的用法
::是作用域分解运算符,是运算符中等级最高的,它分为三种全局作用域符 用来避免全局变量和局部变量冲突int a;int func(){ int a; a = ::a; //用全局变量给局部变量命名}类作用域符 类名称::成员名称class A{ public: int test();}int A::test(){ return 0;}命...原创 2018-09-30 14:22:42 · 338 阅读 · 0 评论 -
C++基础之map中的find和count
map<string a, int b> AA.count(element),是返回被查找元素的个数。因为map不存在相同元素,所以返回值为0或1A.find(elemeent),是返回被查找元素的位置,没有则返回map.end()...原创 2018-09-30 11:03:11 · 4084 阅读 · 0 评论 -
c++基础之#和##操作符
#操作符 #操作符用于预处理阶段,将宏参数转换为字符串,只有宏定义中使用(#define) 使用方法:#definee STRING(x) #xprint(&quot;s%\n&quot;,STRING(Hello World!));##操作符 ##操作符用于预处理阶段,将连接两个标识符,只有宏定义中使用(#define) 使用方法:#define CONNECT(a,b) a##bint ...原创 2018-09-30 10:50:39 · 215 阅读 · 0 评论 -
C++基础之namespace
为什么要有namespace 命名空间(namespace):实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据一些有名字的空间域,把一些全局实体放在各个命名空间,从而与其他全局实体分割开来。即两个类(函数)的作用不同,但名字相同,又不能随意改动其中任何一个名字时,就用到了namespace;namespace 定义namespace namespace_name{ // co...原创 2018-09-30 10:39:52 · 169 阅读 · 0 评论 -
C++杂记:NULL与0的区别、nullptr的来历
转自: https://www.cnblogs.com/malecrab/p/5569707.html某些时候,我们需要将指针赋值为空指针,以防止野指针。有人喜欢使用NULL作为空指针常量使用,例如:int* p = NULL;。 也有人直接使用0值作为空指针常量,例如:int* p = 0;。前者可能觉得:NULL作为空指针常量,名字很形象,可读性较强。 后者可能觉得:NULL并...转载 2018-08-09 23:39:04 · 254 阅读 · 0 评论 -
C++基础之Template
Template所代表的泛型编程是C++的重要组成部分。为什么会有泛型编程 C++是一门强类型语言,所以无法做到像动态语言(python javascript)那样子,编写一段通用的逻辑,可以把任意类型的变量传进去处理。泛型编程弥补了这个缺点,通过把通用逻辑设计为模板,摆脱了类型的限制,提供了继承机制以外的另一种抽象机制,极大地提升了代码的可重用性。注意:模板定义本身不参与编译,而是编...原创 2018-09-30 10:16:54 · 261 阅读 · 0 评论 -
c++基础之uint8_t
C++的基础数据类型:名称字节长度取值范围bool1false,truechar1-128~127signed char1-128~127unsigned char10~255short(signed short)2-215 ~ 215 - 1unsigned short20~216-1int (signed in...原创 2018-10-02 17:08:22 · 92953 阅读 · 6 评论