ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

视觉SLAM ch3代码总结 (三)

2021-12-09 19:59:31  阅读:197  来源: 互联网

标签:初始化 auto ch3 数据类型 运算符 类型 SLAM 重载 视觉


(1)重载运算符<< 和  >>

为什么要重载运算符?

C++语言中已经给出的运算符(包括算数运算符和逻辑运算符)只是针对C++语言中已经给定的数据类型进行运算,假如我们想要对我们的自定义数据类型进行运算的话,则需要重载运算符,我们可以把重载运算符理解成对已有的运算符的一种重新定义。

语法格式如下

<返回类型> operator <运算符符号>(<参数>)
{
	<定义>;
}

举个栗子 重载运算符<

struct node{
    double x,y;
};

bool operator <(const node &a, const node &b ){
    return a.x < b.x && a.y < b.y ;
}

重载运算符以后就可以比较自定义数据类型a和b的大小了

不懂的话可以参考下面文章 讲的很详细

C++中运算符的重载 - ZhiboZhao - 博客园 (cnblogs.com)

  (2)关于 auto

auto c = quat.q.coeffs();

auto的原理就是根据后面的值,来自己推测前面的类型是什么。

auto的作用就是为了简化变量初始化,如果这个变量有一个很长很长的初始化类型,就可以用auto代替。

注意点:
1.用auto声明的变量必须初始化(auto是根据后面的值来推测这个变量的类型,如果后面没有值,自然会报错)

2.函数和模板参数不能被声明为auto(原因同上)

3.因为auto是一个占位符,并不是一个他自己的类型,因此不能用于类型转换或其他一些操作,如sizeof和typeid

4.定义在一个auto序列的变量必须始终推导成同一类型

示例:

std::vector<std::string> ve;

std::vector<std::string>::iterator it = ve.begin();

 我们可以用atuo来代替那个初始化类型:

auto it = ve.begin();


 for(auto i : v)
//c++11的新特性,v是一个可遍历的容器或流,比如vector类型,i就用来在遍历过程中获得容器里的每一个元素。
for(auto count : counts)
//意思是将 counts 容器中的每一个元素从前往后枚举出来,并用 count 来表示,

 关于c++11新特性有博主总结过,遇到的可以去查看相关内容

c++11新特性,所有知识点都在这了! - 知乎 (zhihu.com)

详细代码参考下面文章

视觉SLAM十四讲CH3代码解析及课后习题详解_nudt一枚研究生-CSDN博客

标签:初始化,auto,ch3,数据类型,运算符,类型,SLAM,重载,视觉
来源: https://blog.csdn.net/qq_41451702/article/details/121807749

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有