
C/C++
FlyDremever
潮水自会来去,但心志得坚若磐石
展开
-
ubuntu20.04 切换 gcc/g++ 版本
在文件尾部添加如下源,然后保存并更新。选择gcc-5对应的编号 回车即可。选择g+±5对应的编号 回车即可。切换回高版本方法类似。原创 2024-01-24 11:20:49 · 1974 阅读 · 1 评论 -
docker保存、导入、导出
docker 基础操作原创 2022-10-17 14:05:52 · 486 阅读 · 0 评论 -
C++ nms
#include<iostream>#include<vector>#include<algorithm>using namespace std; /* 左上角坐标和右下角坐标,有的给出左上角坐标和宽高 原理是一样的 */typedef struct Bbox{ int x1; int y1; int x2; int y2; float score;}Bbox;/* 计算iou */float原创 2022-05-13 11:12:48 · 561 阅读 · 0 评论 -
cmake学习(三)
cmake学习(三)调用第三方库,例如OpenCV这里用的是opencv 4.5.3版本的#include<iostream>#include "opencv4/opencv2/opencv.hpp"using namespace cv;using namespace std;int main(){ cv::VideoCapture cap; cap.open(0); while(true) { cv::Mat frame;原创 2021-12-09 23:58:48 · 1959 阅读 · 0 评论 -
cmake学习(二)
cmake学习(二)编译多文件一般写代码的时候都会使用包含头文件和cpp文件的方式# 将指定的目录添加到编译器用于搜索头文件的目录。相对路径被解释为相对于当前源目录。# 命令原型: include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])include_directories(include) # 添加头文件目录# 获取 src/ 目录下所有的cpp 文件 作为 SOURCE(自定义的名字),这样可以省去在生成可执行文件的时候写原创 2021-12-09 00:43:16 · 922 阅读 · 0 评论 -
CMake 学习(一)
CMake 学习(一)1 、基本语法cmake_minimum_required(VERSION 3.10) # 指定版本project(proj_name) # 工程名称set(CMAKE_BUILD_TYPE RELEASE) # 指定编译类型include_directories(include) # 添加头文件目录file(GLOB SOURCE "src/*.cpp") # 源文件set(PROJECT_LINK_LIBS libxxx.so) # 将库文件存到变量中lin原创 2021-11-30 00:53:31 · 430 阅读 · 0 评论 -
C++极简总结— STL list
STL list1、 基本概念STL中的链表是一个双向循环链表列表是序列容器,允许在序列中的任何位置进行恒定时间的插入和删除操作,并在两个方向上进行迭代。列表容器被实现为双向链接列表。双 链列表可以将它们包含的每个元素存储在不同且不相关的存储位置。通过与到它前面的元素的链接和到它后面的元素的链接的每个元素的关联,在内部保持排序。list的优点:采用动态存储分配,不会造成内存浪费和溢出链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素list的缺点:链表灵原创 2020-10-14 17:32:41 · 225 阅读 · 0 评论 -
c++极简总结—STL stack,queue
1、STL stackstack就是“栈” 是容器适配器的一种。栈是一种先进后出的元素序列,访问和删除都只能对栈顶的元素(即最后一个被加入栈的元素)进行,并且元素也只能被添加到栈顶。栈内的元素不能访问。如果一定要访问栈内的元素,只能将其上方的元素全部从栈中删除,使之变成栈顶元素才可以。1.1 构造函数stack<T> stk; //stack采用模板类实现, stack对象的默认构造形式stack(const stack原创 2020-10-08 21:04:44 · 242 阅读 · 0 评论 -
c++极简总结 — STL deque
STL dequedequedeque (usually pronounced like "deck") is an irregular acronym of double-ended queue双端数组,可以对头端和尾端进行插入删除操作。1、deque与vector的头插速度vector 对于头部的插入效率低,因为需要向后移动所有元素。deque 相对vector 要快。2 、deque 内部中控器deque 内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实的数据,中控器维护每原创 2020-10-08 20:01:27 · 169 阅读 · 0 评论 -
c++极简总结 — STL vector
STL容器1、vector1.1 功能类似于数组,不同之处是,数组是静态空间,vector可以动态扩展,vector的迭代器支持随机访问。底层采用的是连续的线性空间。1.2 相关方法:构造函数void printVector(vector<int>& v){ for(vector<int>::iterator it = v.begin();it!=v.end();it++) { cout<< *it<<原创 2020-10-07 21:41:43 · 198 阅读 · 0 评论 -
c++极简总结 — STL(一)
标准模板库STL标准模板库(Standard Template Library)是C++库的一部分。其中容器(container),算法(algorithm),和迭代器(iterator)是STL 的三个基本组成部分。1、STL 六大组件容器:各种数据结构,如vector、set、map等,存放数据。算法:各种常用的算法,如sort、find、copy,for_each()等。迭代器:是访问器中的对象的一种机制,提供一种方法,访问(正向,反向,双向,随机)容器中的元素。仿函数:行为类似函数适原创 2020-10-07 16:38:12 · 222 阅读 · 0 评论 -
C++ 空字符
C++ 空字符本来想定义一个空的字符,想当然的就写成了下面的样子:#include <iostream>using namespace std;int main(){ char ch = ''; cout<<ch<<endl; return 0;} 运行直接报错加上'\0' 就对了 , 哎 基础呀。。。。。#include <iostream>using namespace std;int main(){ char原创 2020-06-11 21:17:01 · 3332 阅读 · 1 评论 -
C++ 日常记录 std::pair
std::pairtemplate <class T1, class T2> struct pair;此类将一对值(可能是不同类型)结合在一起(T1 和 T2)。可以通过其公共成员访问各个值Member variables(成员变量)first: pair中的第一个值second: pair中的第二个值相关函数swap()交换两个pari 的内容#include <iostream>using namespace std;int main(){ std原创 2020-06-07 12:50:28 · 358 阅读 · 0 评论 -
C++极简总结 — 模板(一)
模板模板把函数或类要处理的数据类型参数化,表现为参数的多态性。模板也是一种代码的重用机制。分为函数模板和类模板函数模板函数模板的定义格式如下:template <模板参数表><返回值类型><函数名>(参数表){ ...}#include <iostream>#include <iomanip>using namespace std;template <typename T>T square(T numb原创 2020-05-29 17:43:35 · 254 阅读 · 0 评论 -
C++极简总结 — 运算符重载 (二)
运算符重载赋值运算符重载赋值运算符是用来将一个类的对象赋值给另一个同类的对象。如果没有显示的定义,编译器会提供默认的赋值运算符,将一个对象中的给个数据成员的值都赋给另一个对象。#include <iostream>#include <cstring>using namespace std;class Student{public: Student(char *p) { name = new char[strlen(p)+1]; if(name != NU原创 2020-05-29 14:47:16 · 221 阅读 · 0 评论 -
C++极简总结 — 运算符重载 (一)
运算符重载运算符重载规则符合语法规则不能创建新的运算符不能重载 . ,.* ,?:重载要保证原有基本语义不变。运算符重载实际上就是函数的重载。运算符重载形式1.成员函数重载运算符<返回值类型> operator<运算符>(参数)参数个数与运算符的操作数个数有关。且注意,每个非静态成员函数带有自引用参数 this 指针。 所以成员函数重载运算符需要的参数的个数总比它的操作数少一个。2.友元函数重载运算符...原创 2020-05-29 10:03:21 · 446 阅读 · 0 评论 -
C++ 极简总结— 继承机制(二)
继承机制下的构造函数与析构函数派生类继承基类的大部分成员,但不继承基类的构造函数(包括拷贝构造函数)和析构函数。构造函数的调用顺序1.单继承下构造函数的调用顺序首先基类的构造函数,然后调用派生类的构造函数。...原创 2020-05-28 12:05:01 · 131 阅读 · 0 评论 -
C++ 极简总结 —— 继承机制(一)
继承机制继承机制是面向对象编程技术中的基本特征之一。继承实现了代码重用和代码扩充,大大提高了程序开发的效率。基类和派生类通过继承机制可以利用已有的数据类型来定义新的数据。根据一个类创建一个新类的过程称为继承,也称派生。新类自动具有原类的成员,根据需要还可以增加新成员。被继承的类称为基类,或者父类,而派生出来的类称为派生类,又称子类。继承的种类单继承基本格式:class <类名> :<继承方式><基类名>{public:...protected:..原创 2020-05-28 00:12:34 · 334 阅读 · 0 评论 -
C++ 极简总结——类(二)
类的静态成员<>将要共享的数据说明为类的静态成员。静态成员是指声名为static的类的成员,包括静态数据成员和静态成员函数,在类的范围内所有对象共享该数据静态数据成员静态数据成员不属于任何对象,它不因对象的建立而产生,也不因对象的析构而删除,是类的一部分。特点:必须对静态数据成员进行初始化,系统分配具体的存储空间。初始化不可以在构造函数中进行。初始化格式:<数据类型><类名>::<变量名> = <初值>#include <原创 2020-05-27 18:09:04 · 297 阅读 · 0 评论 -
C++ 极简总结——类(一)
类类构成了实现C++面向对象程序设计的基础,类用来定义对象的行为和属性,类是C++封装的基本单元。1、类的定义使用 class 定义一个类一般形式如下:class 类名{ public: <共有数据和函数> protected: <保护数据和函数> private: <私有数据和函数>}; 数据成员用来描述对象的属性,允许是任何数据类型。类中的数据成员在声名时不允许初始化。成员函数用来描述对象的行为,与普通函数一样,可以重载,可以使用默认参原创 2020-05-27 00:23:46 · 219 阅读 · 0 评论 -
Sublime 配置C++编译运行环境
Sublime 简单配置C++编译运行环境1、安装MingW 并配置其系统环境变量。2、官网下载对应版本的Sublime然后 Tools -> Build System -> New Build System 出现如下:原创 2020-05-26 21:31:57 · 348 阅读 · 0 评论 -
C++ 极简总结—— I/O 流类库(四)
C++ 文件流操作原创 2020-05-10 19:26:31 · 320 阅读 · 0 评论 -
C++ 极简总结—— I/O 流类库(三)
C++输入输出常用成员函数1、输入流常用成员函数(1)、read() 函数原型:istream& read(char *pch, int nCount);说明:从输入流中读取nCount个字符并放入pch 所指的缓冲区。例子:#include <iostream>using namespace std;int main(){ char ch1[10];...原创 2020-05-07 01:41:07 · 283 阅读 · 0 评论 -
C++ 极简总结—— I/O 流类库(二)
C++ 格式化输入输出c++的I/O流类库提供了两种控制格式输入输出的方法:一种是使用ios类的成员函数。另一种是使用控制符。1、使用ios类的成员函数设置标志字。(1) 、ios类中声明了一个数据成员用于记录当前流的格式化状态。这个数据成员就是标志字。格式控制常量表:标志常量Value含义ios::skipws0x0001跳过输入中的空白符i...原创 2020-05-06 23:41:54 · 1166 阅读 · 0 评论 -
C++ 极简总结—— I/O 流类库(一)
在c++ 的输入输出系统中,最核心的是流(stream),流的操作包括对流的读和写。1、流类库c++ 将与输入输出有关的操作定义为一个类体系,并将其放在一个系统库里,以备用户调用。这个执行输入和输出操作的类体系就叫流类,实现流类的库就是流类库。流类库的基本结构类是istream类和ostream类的虚基类,用来提供对流进行格式化I/O操作和错误处理的成员函数。istream类和ostre...原创 2020-05-06 19:53:18 · 1630 阅读 · 0 评论 -
C++ 极简总结 — 多态(一)
C++ 极简总结——多态多态:指相同对象收到不同消息或者不同对象收到相同消息时产生不同的动作。总的来说分为:静态多态(早绑定)动态多态(晚绑定)静态多态(早绑定)例如定义如下的 Rect 类,在clcArea() 中传入不同形式参数会调用不同的函数。这里就是 相同对象收到不同消息产生不同的动作。函数调用在程序执行前就准备好了。有时候这也被称为早绑定。#ifndef POLYMO...原创 2020-04-24 18:25:05 · 210 阅读 · 0 评论 -
常见排序算法——冒泡排序
冒泡排序冒泡排序在扫描过程中,比较两两相邻元素,如果反序则交换,最终,最大元素就被“沉到”了序列的最后一个位置,第二遍扫描将第二大元素“沉到”了倒数第二个位置,重复上述操作,直到n-1 遍扫描后,整个序列就排好序了。相关概念稳定:如果元素a原本在元素b前面,而元素a 等于 b,排序之后元素a仍然在元素b的前面。不稳定:如果元素a原本在元素b的前面,而元素a等于元素b,排序之后 元素a 可能...原创 2020-03-27 22:28:17 · 158 阅读 · 0 评论 -
const 使用方法总结
const 使用方法总结1、修饰变量,说明变量不可以被改变 int a = 100; const int b = 100; a = 20; b = 20; 错误,b是常量不能被改变2、const 修饰指针1)、修饰指针常量指针常量,也就是一个指针类型的常量。本质上就是指针的指向的地址不可以修改, 地址中存储的值可以修改 int a = 0; int b = 0; int *...原创 2019-07-28 02:35:06 · 236 阅读 · 0 评论 -
C++ 命名规范(参考Google 开源项目风格指南 (中文版))
C++代码规范,督促自己写规范的代码。主要参考Google 的C++ 风格指南,总结一下,便于规范自己的代码。1. 总体规则 总体上函数命名,变量命名, 文件命名 要有描述性, 少用缩写. 尽可能使用描述性的命名,让代码易于理解更重要.不要用只 有项目开发者自己能理解的缩写,也不要通过砍掉几个字母来缩写单词。并且使用合适的缩进,添加必要的空格,让代码看起来美观。2. 文件命名 文件...原创 2019-01-18 11:31:20 · 2095 阅读 · 1 评论 -
C语言 - void * 指针 和 空指针
1. void * 类型指针 指向存放数据的地址,但是该地址存放的数据的数据类型我们暂时不知道。举个例子,我们的动态内存分配就是这样,一开始只是分配地址,但没有知道这块地址用了存放什么,接着强制类型转换,使得它用来存放我们想要存放的内容。int*str=(char*)malloc(sizeof(int)*13);上面这条代码,malloc()函数分配的地址一开始是void * 类型的,因为我们用来...原创 2018-04-28 11:16:40 · 564 阅读 · 0 评论