随笔分类 -  C++学习

C++基础学习
摘要:非负整数:^\d+$ 正整数:^[0-9]*[1-9][0-9]*$ 非正整数:^((-\d+)|(0+))$ 负整数:^-[0-9]*[1-9][0-9]*$ 整数:^-?\d+$ 非负浮点数:^\d+(\.\d+)?$ 正浮点数 : ^((0-9)+\.[0-9]*[1-9][0-9]*)|([ 阅读全文
posted @ 2021-11-21 23:30 砚台是黑的 阅读(67) 评论(0) 推荐(0)
摘要:一、泛型、模板 知乎搜索:如何通俗地理解C++的模板? 个人认为比较容易接受的回答: 模板就是建立通用的模具,大大提高复用性。 模板的特点: 模板不可以直接使用,它只是一个框架 模板的通用并不是万能的 根本目的是为了代码复用 C++提供两种模板机制:函数模板和类模板 另外有趣的解释: 公式 类是实例 阅读全文
posted @ 2021-10-19 19:55 砚台是黑的 阅读(104) 评论(0) 推荐(0)
摘要:### 一、准备工作 创建工作空间,即编写代码的位置`mkdir -p dev_ws/src` 进入 `dev_ws/src` 路径下: 先创建依赖包 tutorial_interfaces: ```sh ros2 pkg create --build-type ament_cmake tutori 阅读全文
posted @ 2021-10-19 11:06 砚台是黑的 阅读(651) 评论(0) 推荐(0)
摘要:Gmock是C++中的一个接口测试框架,一般来说和Google Test搭配使用,但Google Test也可以和其他Mock框架一起使用。 本部分是Google Mock基础常用的用法,如需要特殊用法,请查阅Google Mock官方文档。 一、安装部署 依次执行下面命令即可: git clone 阅读全文
posted @ 2021-10-13 09:04 砚台是黑的 阅读(3751) 评论(0) 推荐(0)
摘要:一、介绍 两种简单的定义常量的方式: 1、#define预处理器 2、使用const关键字 使用const关键字前缀声明指定类型的常量 #include <iostream> using namespace std; #define LENGTH 10 #define WIDTH 5 #define 阅读全文
posted @ 2021-10-08 15:58 砚台是黑的 阅读(84) 评论(0) 推荐(0)
摘要:一、介绍 接口描述了类的行为和功能,而不需要完成类的特定实现。只是申明,没有定义实现通常的体现就是一个.h头文件中是一个类的声明。 C++接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数声明为纯虚函数,则这个类就是抽象类。 阅读全文
posted @ 2021-10-08 15:56 砚台是黑的 阅读(67) 评论(0) 推荐(0)
摘要:一、介绍 一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户显式调用(用户也不能调用),而是在创建对象时自动执行。这种特殊的成员函数就是构造函数。有了构造函数,我们就可以在创建对象的同时为成员变量赋值。 #include<iostream> using namespace std; // 阅读全文
posted @ 2021-10-08 15:55 砚台是黑的 阅读(365) 评论(0) 推荐(0)
摘要:一、介绍 全局对象在程序启动时分配,在程序结束时销毁。 对于局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时销毁。 局部static对象在第一次使用前分配,在程序结束时销毁。 动态分配的对象的生存期与它们在哪里创建是无关的,只有当显式地被释放时,这些对象才会销毁。 静态内存用来保存局部 阅读全文
posted @ 2021-09-22 15:44 砚台是黑的 阅读(105) 评论(0) 推荐(0)
摘要:一、介绍 sizeof运算符返回一条表达式或一个类型名字所占的字节数。 sizeof运算符满足右结合律,其所得的值是一个size_t类型的常量表达式。 在sizeof的运算对象中解引用一个无效指针仍然是一种安全的行为,因为指针实际上并没有被真正使用。 sizeof不需要真的解引用指针也能知道它所指对 阅读全文
posted @ 2021-09-22 10:40 砚台是黑的 阅读(100) 评论(0) 推荐(0)
摘要:一、介绍 set中的每一个元素只包含一个关键字:set支持高效的关键字查询操作 → 检查一个给定的关键字是否在set中。 标准库提供的set关联容器分为: 按关键字有序保存元素:set(关键字即值, 即只保存关键字的容器); multiset(关键字可以重复出现的set) 无序集合:unordere 阅读全文
posted @ 2021-09-20 12:36 砚台是黑的 阅读(87) 评论(0) 推荐(0)
摘要:一、介绍 类似容器,保存两个数据成员,用来生成特定类型的模板。 pair的实现是一个结构体,主要的两个成员变量是 first second。 因为是使用struct不是class,所以可以直接使用pair的成员变量。 定义在utility头文件中,定义如下: 类模板:template<class T 阅读全文
posted @ 2021-09-20 11:37 砚台是黑的 阅读(114) 评论(0) 推荐(0)
摘要:一、介绍 map中的元素是一些关键字-值(key-value)对:关键字起到索引的作用,值则表示与索引相关联的数据。 定义在头文件map中,即使用时需要#include <map>。 map<string, size_t> word_count_map; // 空map map<string, st 阅读全文
posted @ 2021-09-20 11:17 砚台是黑的 阅读(114) 评论(0) 推荐(0)
摘要:一、介绍 标准库容器都可以使用迭代器。 类似于指针类型,迭代器提供了对对象的间接访问。 就迭代器而言,其对象是容器中的元素或者string对象中的字符。 使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素。 迭代器分有效和无效之分,这一点和指针差不多,有效的迭代器或者指向某个元素,或 阅读全文
posted @ 2021-09-19 23:49 砚台是黑的 阅读(129) 评论(0) 推荐(0)
摘要:一、介绍 字符串字面值是一种通用结构的实例,这种结构即是C++由C继承而来的C风格字符串。 C风格字符串不是一种类型,而是为了表达和使用字符串而形成的一种约定俗成的写法。 按此习惯书写的字符串存放在字符数组中并以空字符结束。 以空字符结束的意思是在字符串最后一个字符后面跟着一个空字符'\0'。 一般 阅读全文
posted @ 2021-09-19 23:09 砚台是黑的 阅读(116) 评论(0) 推荐(0)
摘要:一、介绍 内置类型 类似于标准库vector,也是存放类型相同对象的顺序容器。 不同的地方:数组的大小确定不变,不能随意向数组中增加元素,不够灵活。 注意:如果不清楚元素的确切个数,请使用vector 二、定义和初始化内置数组 声明形如 a[d],其中a是数组的名字,d是数组的维度。 维度说明了数组 阅读全文
posted @ 2021-09-19 20:55 砚台是黑的 阅读(128) 评论(0) 推荐(0)
摘要:一、介绍 标准库类型vector表示对象的集合,其中所有对象的类型相同。 集合中的每个对象都有一个与之对应的索引,索引用于访问对象。 vector是一个类模板,不是类型。由vector生成的类型必须包含vector中元素的类型,比如 vector<int>。 要想使用vector,必须包含适当的头文 阅读全文
posted @ 2021-09-19 19:54 砚台是黑的 阅读(91) 评论(0) 推荐(0)
摘要:一、介绍 字符串类型,属于抽象数据类型库,支持可变长字符串。 内置类型是由C++语言直接定义的。比如数字和字符,体现了大多数计算机硬件本身具备的能力。 标准库定义了另外一组更高级性质的类型,它们尚未直接实现到计算机硬件中。 string表示可变长字符序列,使用时必须包含string头文件,作为标准库 阅读全文
posted @ 2021-09-19 16:45 砚台是黑的 阅读(156) 评论(0) 推荐(0)
摘要:C++常用代码示例 一、c_str()函数 // 标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组 // c_str():生成一个const char *指针,指向以空字符终止的数组 // 这个数组应该是string类内部的数组 #include<iostream> 阅读全文
posted @ 2021-09-07 21:03 砚台是黑的 阅读(143) 评论(0) 推荐(0)