![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++初探
文章平均质量分 62
本专栏希望记录我在阅读代码、学习代码中掌握的C++知识。
沉入深蓝
分享C++与SLAM相关方面的知识。985工科研究生在读。主要研究方向是:VIO SLAM,多机协同SLAM。
展开
-
形参和实参的定义与区别
实参(argument):全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。 形参(parameter):全称为"形式参数" 由于它不是实际存在变量,所以又称虚拟变量。是...原创 2021-09-06 09:52:52 · 2873 阅读 · 0 评论 -
CMake 设置Target输出目录和后缀名
一.SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)上面的语句能设置可执行文件的输出目录在Win + VS环境下,会自动在你所设置的目录后面扩展一层<CONFIG>目录,所以最终生成的Debug版本程序会在${PROJECT_SOURCE_DIR}/../bin/Debug 目录下,Release版本程序会在${PROJECT_SOURCE_DIR}/../bin/Release 目录下.在Linux + G...原创 2021-09-03 17:21:15 · 815 阅读 · 0 评论 -
RANSAC算法在slam特征匹配时的应用
#include <iostream> #include "opencv2/opencv.hpp" #include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/highgui/highgui.hpp" using namespace cv;using namespace std;int main(int argc, char** argv).原创 2021-09-03 16:03:04 · 704 阅读 · 0 评论 -
C++中的文件读写操作
在做SLAM作业的时候,要读取文件中的位姿信息,所以呢,就借此机会总结一下。首先:#include <fstream>yin原创 2021-06-19 15:29:07 · 106 阅读 · 0 评论 -
如何使用外部共享库和头文件CMAKE PRACTICE第六章
接上一节自己创建库文件和头文件,这一节学习用别人的。上一节的回顾:①通过 ADD_LIBRARY 指令构建动态库(.so)和静态库(.a)。②通过 SET_TARGET_PROPERTIES 同时构建同名的动态库和静态库。③通过 SET_TARGET_PROPERTIES 控制动态库版本 SET_TARGET_PROPERTIES(动态库名 PROPERTIES VERSION x.x SOVERSION x)④最终使用 INSTALL 指令来安装头文件和动态、静态库。 INSTA...原创 2021-05-27 19:37:54 · 258 阅读 · 0 评论 -
静态库与动态库(共享库)的构建 cmake practice第五章
今日份动力不足,困唧唧的,下午才开始干点事。回顾上一节已经学会了:①利用文件夹管理源文件、库等等,例如src、doc、lib #当源码放入src文件中,需要单独在文件夹中编写CMakeLists.txt。在主目录上写工程总CMakeLists. #单独的src文件中的CMakeLists一般要写加入函数,加入库,即ADD_EXECUTABLE()、ADD_LIBRARY(). #主目录中的CMakeList用来构建工程 、设置编译后的二进制文件和中间文件的存在位置、 设置安装...原创 2021-05-27 15:56:37 · 129 阅读 · 2 评论 -
CMAKE常用指令
https://cmake.org/cmake/help/latest/index.html任何你不熟悉的语句,可以参考此网页PROJECT(工程名字) 这条指令会自动创建两个变量:<project name>_BINARY_DIR(二进制文件保存路径) <project name>_SOURCE_DIR(源代码路径)Cmake 系统也帮助我们预定义了 PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR其值与上述对应相等SE...转载 2021-05-26 16:18:13 · 238 阅读 · 0 评论 -
编写一个更好的HelloWorld、改变目标二进制的存放位置
在编译C++工程时,为了更好的利用cmake,方便管理cmake过程中产生的中间文件,我们大都采用外部构建的方式。默认构建目录是工程目录下的build文件夹。基本操作流程为:终端输入:mkdir buildcd buildcmake ..make ./(执行文件)本节的任务是让 Hello World 更像一个工程,我们需要作的是:1,为工程添加一个子目录 src,用来放置工程源代码;2,添加一个子目录 doc,用来放置这个工程的文档 hello.txt3,在工程目录添加原创 2021-05-26 15:55:05 · 370 阅读 · 1 评论 -
C++中的共享库和静态库
在Linux中,分为共享库和静态库。静态库以.a结尾。 ——每次被调用都会生成一个副本,占用内存资源共享库以.so结尾 ——只有一个副本。假设函数文件为hello.cpp#生成静态库 CMakeLists.txt中:add_library(hellolib hello.cpp)#add_library(库名,包含的函数文件)#生成动态库 CMakeLists.txt中:add_library(hellolib_shared SHARED hello.cpp)#add_l.原创 2021-05-26 13:55:52 · 748 阅读 · 1 评论 -
关于C++类模板template<typename T>的使用
template是C++11引用的关键字模板。在阅读代码中遇到,因此展开了相关的学习。template的使用方式有两种。template <typename 类型参数>class 类名{ 类成员声明 };或者template <class 类型参数>class 类名{ 类成员声明 };两种表达方式是没有区别的。类型参数,在调用函数时候可以替换为需要的数据类型,例如:int,char,string等等。我理解的这样原创 2021-05-14 21:43:22 · 7939 阅读 · 2 评论 -
C++中的多线程std::thread 简单应用
在SLAM当中,会涉及到多线程的问题。想来,大型的项目,也大都会用到多个线程进行管理。C++中,想要创建多个线程,需要引入头文件。#include<thread>浅显的理解,创建多线程的过程:①定义一个线程函数void T1(){//函数内容}②定义线程对象 std::thread 线程对象(线程函数);std::thread t(T1);③当线程创建成功并执行线程函数后,一定要保证线程函数运行结束才能退出,调用了join()函数阻塞线程,直到线程函原创 2021-05-14 16:05:38 · 345 阅读 · 1 评论