C++ STL复习(14)迭代器适配器

C++ 11 标准中,迭代器适配器供有 4 类,它们各自的名称和功能如下表所示。实际上,前面在学习各种容器的迭代器时,我们经常会使用到反向迭代器。下面样例,演示了用反向迭代器适配器遍历 list 容器的实现过程:#include <iostream>#include <list>using namespace std;int main(){ std::list<int> values{ 1,2,3,4,5 }; //找到遍历的起点和终点,
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

Socket 开发记录

这几天需要用socket 开发一个UDP程序,接收远程控制指令,开发完毕后,就仔细的学习了下,在此处记录一下socket开发过程。首先,声明一下这边文章都是拜读了几位大神的文章后,自己重新整理的。1 socket介绍socket编程是一门技术,它主要是在网络通信中经常用到。既然是一门技术,由于现在是面向对象的编程,一些计算机行业的大神通过抽象的理念,在现实中通过反复的理论或者实际的推导,提出了抽象的一些通信协议,基于tcp/ip协议,提出大致的构想,一些泛型的程序大牛在这个协议的基础上,将这些抽象化
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

Apollo学习笔记(9)纵向控制代码详读

之前的大致说了一下纵向控制的原理,实际的代码中还有很多小细节需要注意的地方,这里就主要记录下来,阅读纵向控制代码中的一些体会。这里就直接在代码中加入一些笔记,这样比较好理解。Status LonController::ComputeControlCommand( const localization::LocalizationEstimate *localization, const canbus::Chassis *chassis, const planning::ADCTra
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

Apollo学习笔记(10)横向控制代码详读

Status LatController::ComputeControlCommand( const localization::LocalizationEstimate *localization, const canbus::Chassis *chassis, const planning::ADCTrajectory *planning_published_trajectory, ControlCommand *cmd) { auto vehicle_state =
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

Apollo学习笔记(11)MPC

关于MPC控制算法,在控制部分,已经有详细的MPC算法的详细解释和说明,这里就不再多说了,可以自行查阅。
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

g++ 使用总结

这是之前不记得在哪个大神哪里读到的文章,现在找不到了,这里仅仅作为记录,供大家参考。gcc是一款跨平台的C/C++编译器,可以在Linux/Windows平台下使用,具有十分强大的功能,结构也十分灵活,并且可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada的编译。许多有名的工程和库都是使用gcc进行编译的,如nginx,libevent等。g++可以在命令行使用,也可以通过配置IDE的编译环境来调用系统配置的g++环境,大家可以根据需要自行配置。.
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

const和constexpr的比较

本文转自大神博客,在此膜拜。constc++ 中 const 可以用来修饰变量、函数,且不同用处时有不同的含义,下面进行下说明const 语义C++中的const的目的是通过编译器来保证对象的常量性,强制编译器将所有可能违背const对象的常量性的操作都视为error。对象的常量性可以分为两种:物理常量性(即每个bit都不可改变)和逻辑常量性(即对象的表现保持不变)。C++中采用的是物理常量性,例如下面的例子:struct A { int *ptr;};int k = 5, r =
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

CAN报文大小端-Intel格式与Motorola格式的区别

关于CAN报文,用的Motorola,还是Intel格式,只在信号数据跨字节解析时,才有区别。单个字节数据没有区别。小端(Intel)小端 = Little-Endians = Intel Mode:高字节byte保存在高地址中,低字节byte保存在低地址中。举例:如果上面这条报文数据为0xD2 E4 56 78 90, 则VolAD = 0x90Treserved = 0x78 56ins_p: 低位是0xD2,高位是前7bit,0xE4=1110-0100,所以高位是110-
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

C++ 11 Lambda函数

本文转载自 https://www.cnblogs.com/WindSun/p/11182276.htmlC++11新增了lambda函数,其基本格式如下:[捕捉列表] (参数) mutable -> 返回值类型 {函数体}说明:[]是lambda的引出符,捕捉列表能够捕捉上下文中的变量,来供lambda函数使用:    [var] 表示以值传递方式捕捉变量var    [=] 表示值传递捕捉所有父作用域变量    [&var] 表示以引用传递方式捕捉变量var    [&
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

C++中explicit关键字

C++中的explicit关键字用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的。类构造函数默认情况下即声明为implicit(隐式)。上个例子:class CxString // 没有使用explicit关键字的类声明, 即默认为隐式声明 { public: char *_pstr; int _size; CxString(int size)
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

配置ubuntu系统 sudo免密码

每次打开新终端使用sudo命令,都需要输入一次密码,不太方便,这里记下取消密码的方法。sudo vim /etc/sudoers这里假设用户为kang,在最后一行添加kang ALL=(ALL:ALL) NOPASSWD:ALL如图:测试发现,新开终端不用再输入sudo密码。...
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

Ubuntu和Windows双系统时间同步

按照下面的步骤即可sudo apt-get install ntpdatesudo suntpdate time.windows.comhwclock --localtime --systohcreboot
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

C++ 进程、线程

大神链接https://www.cnblogs.com/eilearn/p/9414569.htmlhttps://blog.csdn.net/zhouchunyue/article/details/79271869进程狭义定义:进程就是一段程序的执行过程。广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。简单的来讲进程的概念主要有两点:第一,进程是一个实体。每一个进程.
分类: 其他 发布时间: 03-31 10:05 阅读次数: 0

C++ 多线程之间的数据交互

参考博客https://blog.csdn.net/hai008007/article/details/80246437,在此之上整理修改。同一个进程内的多个线程之间免不了需要进行数据的交互,队列和共享数据是实现多个线程之间的数据交互的常用方式,封装好的队列使用起来相对来说不容易出错一些,而共享数据则是最基本的也是较容易出错的,因为它会产生数据争用的情况,即有超过一个线程试图同时抢占某个资源,比如对某块内存进行读写等,如下例所示:#include <iostream>#include .
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

C++ 并发指南 std::mutex

这几篇都是拜读大神后,记录下来的笔记,链接https://www.cnblogs.com/haippy/p/3284540.htmlMutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 < mutex > 头文件中,所以需要使用 std::mutex,就必须包含 < mutex > 头文件。< mutex >头文件Mutex系列类std::mutex,最基本的 Mutex 类。std::recursive_mutex,.
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

C++ 并发指南 std::lock

C++11 标准为我们提供了两种基本的锁类型,分别如下:std::lock_guard,与 Mutex RAII 相关,方便线程对互斥量上锁。std::unique_lock,与 Mutex RAII 相关,方便线程对互斥量上锁,但提供了更好的上锁和解锁控制。另外还提供了几个与锁类型相关的 Tag 类,分别如下:std::adopt_lock_t,一个空的标记类,定义如下:struct adopt_lock_t {};该类型的常量对象adopt_lock。adopt_lock 是一个
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

C++ 并发指南<future>(1) std::promise

< future > 头文件中包含了以下几个类和函数:Providers 类:std::promise, std::package_taskFutures 类:std::future, shared_future.Providers 函数:std::async()其他类型:std::future_error, std::future_errc, std::future_status,std::launch.std::promise 类介绍promise 对象可以保存某一类型 T
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

C++ 并发指南<future>(2)std::packaged_task

std::packaged_task 包装一个可调用的对象,并且允许异步获取该可调用对象产生的结果,从包装可调用对象意义上来讲,std::packaged_task 与 std::function 类似,只不过 std::packaged_task 将其包装的可调用对象的执行结果传递给一个 std::future 对象(该对象通常在另外一个线程中获取 std::packaged_task 任务的执行结果)。std::packaged_task 对象内部包含了两个最基本元素:被包装的任务(stored
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

C++ 并发指南 std::condition_variable

< condition_variable > 头文件主要包含了与条件变量相关的类和函数。相关的类包括 std::condition_variable 和 std::condition_variable_any,还有枚举类型std::cv_status。另外还包括函数 std::notify_all_at_thread_exit(),下面分别介绍一下以上几种类型。std::condition_variable 类介绍当 std::condition_variable 对象的某个 wait 函数
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0

C++ 并发指南 std::atomic_flag

本文介绍 < atomic > 头文件中最简单的原子类型: atomic_flag。atomic_flag 一种简单的原子布尔类型,只支持两种操作,test-and-set 和 clear。std::atomic_flag 构造函数std::atomic_flag 构造函数如下:atomic_flag() noexcept = default;atomic_flag (const atomic_flag&T) = delete;std::atomic_flag 只有默认构造
分类: 其他 发布时间: 03-31 10:04 阅读次数: 0