![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++知识点
用于C++学习
什么都会一点儿的自动驾驶工程狮
积跬步,至千里的小白攻城狮
展开
-
C++知识点(19) 纯虚函数与抽象基类
test.h#ifndef TEST#define TEST#include<iostream>using namespace std;class Shape//抽象基类,包含一个或一个以上纯虚函数{private: /* data */public: virtual float area() const {return 0.0;}//虚函数 virtual float volume() const {return 0.0;}//虚函数 virt原创 2021-09-25 20:43:33 · 132 阅读 · 0 评论 -
C++知识点(18) unordered_map
unorder_map是基于哈希表实现,不允许有重复的key值(1) find()iterator find(const key_type &key)如果key存在,则find返回key对应迭代器,通过迭代器的second获取值;如果key不存在,则返回unordered_map::end();因此可以通过map.find(key)==map.end()来判断key是否存在于unordered_map中。(2)count()size_type count(const key_type &原创 2021-09-15 21:55:39 · 2171 阅读 · 0 评论 -
C++知识点(17)C++关键字static特点总结
一、面向过程设计1.修饰变量1.1 静态全局变量在声明它的整个文件可见,文件以外不可见。1.2 静态局布变量(1)在执行到该对象声明处被首次初始化,后续函数调用,不再初始化;(2)作用于局部作用域,当定义函数结束,作用域也结束;2.修饰函数2.1 全局静态函数(1)只能在声明它的文件中可用,不能被其它文件所用;(2)其它文件可以定义相同名称的函数二、面向对象设计1.修饰j静态数据成员(1)该类所有对象共有,只分配一次内存;(2)定义时即初始化,只限类外,eg. int Box:h原创 2021-08-08 11:31:10 · 219 阅读 · 0 评论 -
C++知识点(16)智能指针shared_ptr的初始化形式
1.默认初始化的智能指针保存着一个空指针NULLshared_ptr<T> p1;if(!p1) cout<<"p1=NULL"<<endl;2.一般形式的初始化用字符串hello初始化。shared_ptr<T> p2(new T);if(p2 && p2->empty()) cout<<"p1=NULL"<<endl;用字符串hello初始化。shared_ptr<T>原创 2021-08-07 21:02:00 · 1891 阅读 · 0 评论 -
C++知识点(14)线程与并发
共享内存 同一时刻只允许一个线程使用,要对访问临界资源的代码加锁保护。该程序中三个线程中var 的访问需加锁保护,保证了三个线程不会同时对 var 进行处理。#include <chrono>#include <iostream>#include <mutex>#include <random>#include <thread>double var = 100;std::mutex mymutex;void Threadwirt原创 2021-05-22 18:59:02 · 99 阅读 · 2 评论 -
C++知识点(13)_返回对象用“引用“还是“值“?
看一个例子:这里有一个时间类Time.对两个时间求和。Time Time::Sum(const Time& t) const{ Time sum; sum.minutes=this->minutes+t.minutes; sum.hours=this->hours+t.hours+sum.minutes/60; sum.minutes%=60; return sum;}知识点1:返回对象应该用”引用“还是”值“?一般来说,值传递的方式会创建对象的副本,这上述程序中s原创 2020-07-01 10:01:14 · 277 阅读 · 0 评论 -
C++知识点(12)_std::unique_lock
在L4低速园区无人驾驶项目中,其定位方案如下:AMCL相对定位+GNSS绝对定位的融合定位方式,相比于当前的移动机器人定位区别如下:1.里程计运动模型推算2.初始化 似然域的提前处理...原创 2020-06-27 20:55:13 · 212 阅读 · 0 评论 -
C++知识点(11)_传递数组、指针和引用给函数
111原创 2020-06-27 20:54:42 · 371 阅读 · 0 评论 -
C++知识点(10)_指针和引用作为函数返回值
11原创 2020-06-27 20:54:16 · 291 阅读 · 0 评论 -
C++知识点 (8)istringstream的用法
isstringstream对象可以绑定一行字符串,然后以空格为分隔符把该行分割开。添加头文件:#include工程实例:比如读取文件:data.txtL 0 0 1477010443349642 0 0 0 0R 0 0 0 1477010443349642 0 0 0 0工程实现:头文件定义数据类型:class MeasurementPackage {public: lo...原创 2020-06-27 20:53:01 · 1441 阅读 · 0 评论 -
C++知识点(7)_istringstream文件流
在阅读udacity的粒子滤波的代码时,发现读取地图数据的代码写得还不错,后续可能会在工程中用上,在这里记录下来,以作记录。首先它定义了地图数据结构:class Map {public: struct single_landmark_s { int id_i ; // Landmark ID float x_f; // Landmark x-position in the map...原创 2020-06-27 20:52:16 · 259 阅读 · 0 评论 -
C++知识点(6)_表驱动法替代if-else或switch语句
通常来说,出现不同数据格式转换的场景,比如给定一个整数,将它与每周的星期名称映射,通常会采用if-else或switch语句,但是这种语句存在两个问题(1)代码太长,逻辑重复冗余,复杂度高(2)可维护性低,耦合性强,每新增一个流程分支,就要在函数代码中新添加一个判断语句。这里介绍一种通用的表驱动实现方法替代以上方式。要实现一个通用的表驱动模式需要解决两个问题:(1)如何在表中注册不同类型...原创 2020-07-06 14:25:26 · 836 阅读 · 0 评论 -
C++知识点(5)_substr()函数分割字符串
前言鉴于自身对与C++基础知识的掌握不够牢固,自今日起开始结构化、系统性地去总结C++语法知识,期望能够灵活地去使用此语言。本专栏的知识点主要是围绕着谭浩强的《C++程序设计基础》、《C++ Primer Plus》,通过提炼两本书中的共同知识点,并结合相关的工程案例,进行语法分析,语法本身不难,难的是结构化、系统性以及一种坚持学习,总结的习惯。1.C++的数据类型...原创 2020-06-27 20:50:57 · 271 阅读 · 0 评论 -
C++知识点(4)_新特性 =default =delete
1. =default和=delete任何事物的出现都必然有着其出现的理由,伴随着每一个新的概念产生都会带来一系列的便利和价值。C++在不断的演变与发展,与此同时,伴随着许多新的特性和功能产生。=default :显式缺省(告知编译器生成函数默认的缺省版本)=delete :显式删除(告知编译器不生成函数默认的缺省版本)目的:为了增强对“类默认函数的控制”,更加精准去控制默认版本的函数。...原创 2020-06-27 20:50:34 · 153 阅读 · 0 评论 -
C++知识点(3)_unique_ptr智能指针的使用
unique_ptr某个时刻只能有一个unique_ptr指向一个给定的对象,当unique_ptr被销毁时它所指向的对象也被销毁。常规使用:unique_ptr u1;//空unique_ptr,u1使用delete来释放T类型的指针。unique_ptr<T,D> u2(T*,d);//用T*指针和类型D的对象d初始化u2,此时使用d 来替代模式的deleter删除器。u....原创 2020-06-27 20:49:23 · 158 阅读 · 0 评论 -
C++知识点(2)_数组指针int (*p)[n] 和指针数据 int *p[n]
此博客主要是想区分两个概念:int *a[10]:数组指针,数组a里面存放的是10个int型指针。先找到声明符a,然后向右看,有[]说明a是个数组,再向左看,是int *,说明数组中的每个元素是int *。所以这是一个存放int指针的数组。int (a)[10]:a是指针,指向一个数组。该数组中有个10个int型元素。先找到声明符a,被括号括着,先看括号内的(优先级高),然后向右看,没有,...原创 2020-06-27 20:48:57 · 688 阅读 · 2 评论 -
C++知识点(1)_thread库
#include<iostream>#include<thread>#include<string>using namespace std;class CTest{public: CTest(){cout<<"000"<<endl;} int tstart(const string& tname) ...原创 2020-06-27 20:48:16 · 214 阅读 · 0 评论