C++ – std::unordered_map中使用结构体或者vector等复杂的数据结构作为Key值
1 std::unordered_map中使用结构体或者vector等复杂的数据结构作为Key值 1.1 std::vector作为Key C++11中引入了unordered_set和unordered_map,其内部数据结构实现没有使用map和set中的红黑树,而是使用的哈希表。如果我们在uno…
- C++
- 2023-01-05
C++ – 在CTC解码算法后移除相邻重复和blank索引
1 C++ 在CTC解码算法后移除相邻重复和blank索引 在CTC Decode解码算法之后,比如说使用Greedy CTC Decode、Beam CTC decode、Prefix Beam CTC Decode算法之后,通常会得到包含blank索引的一个长序列,比如说 1,5,8,8,8,0…
- C++
- 2022-12-22
C++ – 左值和右值,右值引用与移动语义的概念与理解
1 C++左值和右值 在看介绍C++11标准书籍的时候,经常在书中看到"左值"和"右值"的概念,这两个东西理解起来比较抽象。但是在C++11之后变得非常重要,其也是理解std::move()、std::forward等新语义的基础。 int a = 100; 上述示例代码中,a为左值,100为右值。…
- C++
- 2022-11-28
C++ – RAII机制
1 C++ RAII机制 RAII(Resource Acquisition Is Initialization),资源获取即初始化,是一种C++编程技术。在类的构造函数中请求资源,在类的析构函数中释放资源的技术称为资源获取即初始化,简称RAII。 RAII技术可以将每个资源封装到一个类中,其中 构…
- C++
- 2022-11-21
C++ – 判断两个字符串是否相等方法总结
1 C++判断两个字符串是否相等 1.1 直接比较 #include <iostream> #include <string> int main() { std::string a = "a"; std::string b = "a"; if (a == b) { std::…
- C++
- 2022-11-21
C++ – std::string字符串格式化方法总结
1 C++ std::string字符串格式化 在Python中,我们可以使用以下代码方便的格式化字符串 if __name__ == '__main__': format_str = "There are {} fools in the world".format(10) print(format…
- C++
- 2022-11-17
C++ – 拷贝构造函数与拷贝构造函数调用时机
1 C++的拷贝构造函数 1.1 拷贝构造函数的含义与形式 C++的拷贝构造函数与构造函数不同,其作用主要是实现从源类对象到目标类对象逐个字节的复制,即目标对象和源对象都等于源对象的值。 C++中类的拷贝构造函数(赋值构造函数)的常用的形式如下 类名(const 类名& exp) 比如我们写…
- C++
- 2022-11-16
C++ – return this和return *this的含义和区别
1 C++中return this和return *this的含义和区别 在C++的类中,this表示指向自身的指针,例如 class A { public: A():m_Member(0) {}; virtual~A() {}; public: void AddMember() { this-&g…
- C++
- 2022-11-08
C++ – const修饰符与指针
C++中,我们将数据传递给函数有四种方式:指向非const数据的非const指针、指向const数据的非const指针、指向非const数据的const指针,指向const数据的const的指针,每种方式都具有不同的访问权限。 1 const修饰指针 1.1 指向非const数据的非const指针 …
- C++
- 2022-11-04
C++ – 使用标准库实现事件和委托,信号和槽机制
在日常的程序开发中我们经常会遇到以下的实际问题: 比如在一个文件下载完成时,发送邮件或者微信通知告知用户; 比如点击一个按钮时,执行相应的业务逻辑; 比如当用户的金额少于一个阈值时,通知用户及时充值; 等等。 这些业务需求其实都对应着观察者模式,当一个对象的状态发生改变或者达到某种条件,所有的观察者…
- C++
- 2022-11-02
C++ – single header跨平台高效开源日志库Easylogging++的配置和使用
1 Easylogging++ Easylogging++是一个只有单个头文件的开源跨平台日志库,拥有简单易集成,速度极快,线程安全,高效并可配置可扩展等等优点,现在也是我的主力日志库。 1.1 下载Easylogging++ Github地址:https://github.com/amrayn/e…
- C++
- 2022-10-26
C++ – 数组初始化
1 C++数组声明 C++中的数组是一种数据格式,可以存储多个同类型的值。 通常声明数组的通用格式如下: typeName arrayName[arraySize] 其中typeName为数据类型,arrayName为数组名称,arraySize为数组大小。 比如: float persons[10…
- C++
- 2022-10-14