C++编程基础
C++编程基础知识汇总
CV矿工
这个作者很懒,什么都没留下…
展开
-
static_cast、const_cast用法
用法说明:该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。来源:为什么需要static_cast强制转换?它主要有如下几种用法:•用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类指针或引用)时,由于没有动态类型检查,所以是不安全的。•用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。原创 2023-09-28 15:44:12 · 141 阅读 · 0 评论 -
vector::clear(),容器vector的clear函数详解。
同样对于vector temp1(50)这种类型的变量,使用temp1.clear()之后将会不能用temp1[1].push_back(value)进行赋初值,只能使用temp1.push_back(temp);作用:将会清空temp中的所有元素,包括temp开辟的空间(size),但是capacity会保留,即不可以以temp[1]这种形式赋初值,只能通过temp.push_back(value)的形式赋初值。clear()函数的调用方式是,vector temp(50);原创 2022-11-25 17:48:20 · 4555 阅读 · 0 评论 -
跨服务器数据拷贝scp使用
scp [参数] [原路径] [目标路径]例:scp -r local_folder remote_username@remote_ip:remote_folder命令执行后需要输入用户密码远程到本地:scp [email protected]:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/原创 2022-06-17 10:25:57 · 427 阅读 · 0 评论 -
linux zip tar压缩和解压
tar可以用来打包文件,还可以把特定目录下的全部文件打包成一个总的文件,打包的同时还可以同时使用gzip的功能进行压缩。如果只执行tar命令则压缩后的文件后缀名是.tar,如果执行gzip命令则压缩后的文件名后缀名是.gz。如果同时执行两个命令则压缩后的文件名是.tar.gz或者简写为.tgz。比如:tar -zcvf boot.tgz /boot #将/boot目录整合压缩成boot.tgz参数说明:-z:使用gzip压缩;-c 创建压缩文件;-v 是显式当前被压缩的文件,-f 指使用文件名即boot.t原创 2022-06-16 17:29:59 · 439 阅读 · 0 评论 -
Linux下查看文件和文件夹大小的df和du命令 一句话:du -h --max-depth=1
Linux下查看文件和文件夹大小的df和du命令 du -h --max-depth=1原创 2022-06-13 15:10:50 · 3039 阅读 · 0 评论 -
服务器可视化文件夹不能打开解决办法
重新解挂载下。原创 2022-06-10 11:30:06 · 119 阅读 · 0 评论 -
STL 容器操作总结(vector、set、unordered_map、stack、queue、string)
vector、unordered_map、unordered_set、string、stack、queue使用方法以及函数总结快速浏览版。原创 2022-05-20 11:04:01 · 264 阅读 · 1 评论 -
C++ lower_bound()函数用法详解
lower_bound() 函数用于在指定区域内查找不小于目标值的第一个元素。也就是说,使用该函数在指定范围内查找某个目标值时,最终查找到的不一定是和目标值相等的元素,还可能是比目标值大的元素。lower_bound() 函数定义在头文件中,其语法格式有 2 种,分别为://在 [first, last) 区域内查找不小于 val 的元素ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last,原创 2022-05-20 10:36:25 · 9979 阅读 · 1 评论 -
C++中accumulate的用法
accumulate定义在#include中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理累加求和int sum = accumulate(vec.begin() , vec.end() , 42); accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。accumulate函数将它的一个内部变量设置为指定的初始值,然后在此初值上累加输入范围内所有元素的值。accumulate算法返回累加的结果,其返回类型就是其第三个实参的类型。可以使用acc原创 2022-04-14 10:51:23 · 5255 阅读 · 3 评论 -
Pytorch 中 model.eval() 和 with torch.no_grad() 的区别
而with torch.no_grad()则主要是用于停止autograd模块的工作,以起到加速和节省显存的作用,具体行为就是停止gradient计算,从而节省了GPU算力和显存,但是并不会影响dropout和batchnorm层的行为。在val模式下,dropout层会让所有的激活单元都通过,而batchnorm层会停止计算和更新mean和var,直接使用在训练阶段已经学出的mean和var值。在PyTorch中进行validation时,会使用model.eval()切换到测试模式,在该模式下,原创 2022-04-01 11:20:50 · 674 阅读 · 0 评论 -
git stash / git reset 用法总结
git stash常用git stash命令:(1)git stash save “save message” : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。(2)git stash list :查看stash了哪些存储(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{num},比如第二个 git stash show stash@{1} (4)git stash show -p :原创 2022-03-25 17:18:16 · 461 阅读 · 0 评论 -
FFmpeg:视频转码、剪切、合并、播放速调整
安装去官网按提示安装即可,支持三大操作系统。唯一要吐槽的是,Ubuntu 14.04 等较新的版本,从默认软件列表里移除了 ffmpeg,转而支持 libav,可是 libav 又没弄好,很难用——开源社区瞎折腾起来真是无力吐槽。2017 更新: Ubuntu 16.04,FFmpeg 又回到了官方仓库:sudo apt install ffmpeg转码最简单命令如下:1. ffmpeg -i out.ogv -vcodec h264 out.mp42. ffmpeg -i out.ogv -原创 2022-03-25 17:14:11 · 684 阅读 · 0 评论 -
linux kill教程
Ps -xa | grep ais-mmlabKill -9 pidKillall -9 加进程名字killall -name /home/c00590370/anaconda3/envs/ais-3/bin/python原创 2022-03-10 15:55:35 · 1612 阅读 · 0 评论 -
恒等于的运算优先级高于安位于或
注意c++的运算优先级问题优先级表格原创 2022-02-28 20:21:16 · 418 阅读 · 0 评论 -
xxx.size()直接相减会出问题,要先赋值
class Solution {public: int strStr(string haystack, string needle) { if (needle.empty()) return 0; for (int i = 0; i<= haystack.size() - needle.size(); i++) { bool flag = false; for (int j = 0 ; j < needle原创 2022-02-25 16:09:57 · 220 阅读 · 0 评论 -
C++逻辑运算法没有异或,只有位运算符有^
如题原创 2022-02-24 19:31:40 · 340 阅读 · 0 评论 -
C++ is_sorted()函数
此函数专门用于判断某个序列是否为有序序列。和之前学习的其它排序函数(比如 sorted() 函数)一样,is_sorted() 函数本质上就是一个函数模板,定义在头文件中。因为,在使用该函数之前,程序中必须先引入此头文件。is_sorted() 函数有 2 种语法格式,分别是://判断 [first, last) 区域内的数据是否符合 std::less<T> 排序规则,即是否为升序序列bool is_sorted (ForwardIterator first, ForwardItera原创 2022-02-24 19:30:29 · 1114 阅读 · 0 评论 -
C/C++ 宏定义中#、##、#@的区别
#表示:对应变量字符串化##表示:把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符连接符#@:它将单字符标记符变换为单字符,即加单引号。例如:#define B(x) #@x则B(a)即’a’,B(1)即’1’,但B(abc)却不甚有效。#include <stdio.h> #define trace(x, format) printf(#x " = %" #format "\n", x) #define trace2(i) trace(x##i, d原创 2022-02-23 15:15:55 · 234 阅读 · 0 评论 -
异常规范 (引发,noexcept) (C++)
如题原创 2022-02-23 14:28:26 · 338 阅读 · 0 评论 -
C++ 变量名命名规则
C++提倡有一定含义的变量名。如果变量表示差旅费,应将其命名为cost_of_trip或costOfTrip,而不是将其命名为x或cot.必须遵循几种简单的C++命名规则:1.在名称中只能使用字母字符、数字和下划线(_)2.名称的第一个字符不能是数字3.区分大写字符与小写字符4.不能将C++关键字用作名称5.以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。6.C++对于名称的长度没有限制,名称中所有的字符都原创 2022-02-23 11:50:10 · 8213 阅读 · 0 评论 -
位运算的性质
异或 ^=任何数和 00 做异或运算,结果仍然是原来的数,即 a⊕0=a。任何数和其自身做异或运算,结果是 00,即 a⊕a=0。异或运算满足交换律和结合律,即a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。与 &=a&a=aa&0=0或 |=a|a=aa|0=a位运算优先级高于与 或 异或。更多位运算的总结看这里...原创 2022-02-12 11:28:38 · 264 阅读 · 0 评论 -
帧率FPS,屏幕刷新频率赫兹Hz
帧数帧率(Frame rate)是以帧称为单位的位图图像连续出现在显示器上的频率(速率)。该术语同样适用于胶片和摄像机,计算机图形和动作捕捉系统。帧速率也可以称为帧频率,并以赫兹(Hz)表示。FPS,全称Frames Per Second,一秒钟内出现的Frames。刷新频率和帧数基本一样,但多用在显示器领域,表示显示器能支持的性能。Hz = 周期/间隔时间。简单来说周期为1,间隔时间为0.030s,则频率=1/0.03=33Hz。与帧数完全相同。...原创 2022-02-08 14:40:14 · 7228 阅读 · 0 评论