
C++
文章平均质量分 68
orangezs
这个作者很懒,什么都没留下…
展开
-
[c++]-C++中的四种cast强制类型转换
1.简介为什么需要四类cast强制类型转换?因为C的强制转换表面上看起来功能强大,但是C的本身类型没有那么的安全,在强制转换时不会进行类型安全检查,所以可能会出错。2.四类转换C++中四种类型转换是:static_cast, dynamic_cast, const_cast, reinterpret_cast2.1. const_cast主要有三种使用的情况。指针,引用和this指针,以及const转换为非const类型。int n = 5;int *k1 = const_cast<原创 2021-09-03 16:22:07 · 1507 阅读 · 1 评论 -
[c++]-STL中map迭代auto与迭代器iterato的区别以及为什么map迭代输出顺序与存储顺序相反
1.问题引出今天在做 剑指 Offer 50. 第一个只出现一次的字符 时发现一个奇怪的现象,想要找到第一个只出现一次的字符时,一直输出的为d,好像map的遍历与存储顺序相反,由此实验了auto,iterator,发现为同样的问题。2.结论先给出结论无序图中的存储与插入顺序相反,类似于栈,先进后出。假设我们有一个无需图std::unordered_map<char,int> map我们对其进行插入操作std::unordered_map<char,int> map;ma原创 2021-07-19 10:20:23 · 4246 阅读 · 0 评论 -
[c++]-cmake简易教程及常用配置及常用命令整理
阅读导引1.cmake简介2.cmake语法3.构建方式4.CMAKE_EXPORT_COMPILE_COMMANDS选项5.CMake命令5.1 cmake_minimum_required 命令5.2 project 命令5.3 set命令5.4 message命令5.5 find_package命令5.6 include_directories命令5.7 add_executable命令5.8 add_library命令5.9 target_link_libraries 命令6.补充1.cmake原创 2021-07-05 19:27:41 · 1882 阅读 · 4 评论 -
[c++]-c++中的左值和右值、左值引用和右值引用、万能引用和引用折叠及完美转发
1.左值和右值1.1左值和右值定义在c++中,左值是一个指向内存的东西,换句话来讲,左值有地址,保存在内存中,右值则为不指向任何地方东西,即不在内存中占有确定位置。一般来说,右值是暂时和短暂的,而左值则存活的很久。如下例子int var = 4;4 = var; //error(var + 10) = 4; //error其中,赋值运算符要求一个lvalue作为它的左操作数,当然var是一个左值,因为它是一个占确定内存空间的对象。常量4和表达式var+1都不是lvalue(它们是rval原创 2021-07-05 14:36:32 · 1121 阅读 · 4 评论 -
[debug]-vim编写g++编译出现报错/usr/bin/ld: cannot open output file test: Is a directory,collect2: error: ld
错误背景采用vim编写了一段代码保存文件为test.cc利用g++执行简单编译,编译指令如下g++ test.cc -o test错误类型提示cheng@zs:~$ g++ test.cc -o test/usr/bin/ld: cannot open output file test: Is a directorycollect2: error: ld returned 1 exit status错误原因想要输出的可执行文件与当前目录下存在重名文件。即test.cc输出为test所在原创 2021-07-01 10:37:07 · 1205 阅读 · 0 评论 -
[c++]-constexpr与const区别
1.const部分const 是constant的缩写,本意是不变的,不易改变的意思。const 在C++中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。1.1const修饰普通类型的变量const int a = 7; int b = a; //it's righta = 8; // it's wrong,a被定义为一个常量,并且可以将a赋值给b,但是不能给a再次赋值。对一个常量赋值是违法的事情,因为a被编译器认为是一个常量,其值不允许修改。如下例子#原创 2021-06-23 15:35:56 · 954 阅读 · 0 评论 -
[c++]-uint8_t,uint16_t,uint32_t,uint64_t代表含义及其标准定义
c++基础数据类型首先来看一张c++基础数据类型的列表下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。注意:不同系统会有所差异,一字节为 8 位。注意:long int 8 个字节,int 都是 4 个字节,早期的 C 编译器定义了 long int 占用 4 个字节,int 占用 2 个字节,新版的 C/C++ 标准兼容了早期的这一设定。详解:菜鸟教程-c++数据类型总的来说c++的基础数据类型分为三类:布尔型整型(char型从本质上说,原创 2021-06-23 10:49:17 · 34704 阅读 · 1 评论 -
[c++]-unordered_map用法及成员方法
创建C++ unordered_map容器的方法1)通过调用 unordered_map 模板类的默认构造函数,可以创建空的 unordered_map 容器。比如:std::unordered_map<std::string, std::string> umap;由此,就创建好了一个可存储 <string,string> 类型键值对的 unordered_map 容器。2) 当然,在创建 unordered_map 容器的同时,可以完成初始化操作。比如:std::uno原创 2021-06-08 20:29:05 · 7227 阅读 · 0 评论 -
[C++]-leetcode231-2的幂-bitset用法详解
简介C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。头文件#include<bitset>构造函数bitset<4> bitset1; //无参构造,长度为4,默认每一位为0bitset<8> bitset2(12); //长度为8,二进制保存整数12,前面用0补充string s = "100101";bitset<10> bitset3(s);转载 2021-06-01 10:21:08 · 271 阅读 · 0 评论 -
[debug]-ubuntu下opencv无法读取视频且capture.isOpened()测试一直为false
简介问题描述:c++版本采用tar包编译安装的opencv无法正常利用VideoCapture capture()打开视频,利用capture.isOpened()测试一直为false20200526解决的bug非复制粘贴。请先检查视频路径是否正确,请尽量使用绝对路径注意,代码为c++版的opencv,系统为unbuntu20.04,opencv安装方式为采取tar包然后编译安装代码例子如下#include <opencv2/opencv.hpp>using namespace原创 2021-05-26 18:45:27 · 3972 阅读 · 1 评论 -
[debug]-cv::Exception报错-c++版本opencv
简介cmake .. && make成功后,执行可执行文件报错bug内容terminate called after throwing an instance of 'cv::Exception' what(): OpenCV(3.4.10) /home/cheng/somelib/opencv-3.4.10/modules/highgui/src/window.cpp:658: error: (-2:Unspecified error) The function i原创 2021-05-25 20:15:25 · 695 阅读 · 0 评论 -
[c++]-完全卸载tar包编译安装的c++版本opencv
简介近期更新,卸载的opencv版本为3.4.10,非无脑复制粘贴帖,方法未失效。注意我这个方法是卸载采用官网下载tar包,然后一步步编译的安装的这样的方式安装的opencv1.查看opencv版本pkg-config --modversion opencvoutput3.4.102.卸载找到当初安装opencv建立的build目录,进入目录执行卸载操作cd cd /home/cheng/somelib/opencv-3.4.10/build/sudo make uninstall原创 2021-05-25 19:57:33 · 1096 阅读 · 1 评论 -
[c++]-利用chrono标准库实现c++毫秒级精准计时,完成图像推理时间计算,并输出FPS
资源Date and time utilities - C++ Reference简介在计算机视觉中我们可能经常需要计算一次推理的耗时,来得到确定的FPS,查了很多其他方法,尤其是clock()这个方法对于ms级计时来说也太不准了。这些方法都太古老了,有的还要区分电脑是不是win。终于被我找到了c++11中的标准库--chrono,又准又快!不想看罗嗦的介绍的同学可以直接看 1.2中 标黄的例子1.chrono介绍主要包含如下的几部分Clockssystem_clocksteady原创 2021-05-25 13:27:38 · 3028 阅读 · 1 评论 -
[c++]-ubuntu20.04安装c++版本opencv
简介opencv分为两种版本,一种是供python使用的,一种是供c++使用的。1.python常见的使用场景就是我们在各种py文件中常见的 import cv2,我们通常直接使用pip install opencv-python直接安装。2.c++常见的使用场景是包含在头文件中#include <opencv2/xx.xx>,通过cmake编译。资源opencv官方各版本下载地址安装1.下载进入官方下载地址后选择自己合适的版本,选择sources版本下载下载后一般在原创 2021-05-19 11:35:30 · 3559 阅读 · 4 评论 -
leetcode-二叉树的遍历-前序遍历/中序遍历/后序遍历/层序遍历 (C++代码)
二叉树的遍历-前序遍历/中序遍历/后序遍历 (C++代码)1.前序遍历前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树。请看下面的例子:给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNod原创 2020-06-28 00:08:57 · 828 阅读 · 0 评论