按时间归档:2023年02月
-
【Modern cpp】并发、原子性、锁、条件变量
线程与C++ 在C++11之前的标准中,在C++语言层面是没有对线程的支持的,所以在特定平台编写(windows,linux等)跟线程相关的C++程序往往是要结合所在平台的…
-
【Modern cpp】lambda
匿名函数–lambda函数 匿名函数或者匿名类这种语法在其他语言(如lisp,java中)早有应用。在C++11中正式引入了lambda函数,在很多场景下让程序变得更加直…
-
【Modern cpp】不定参数模板与std::tuple、std::bind实现原理
不定参数函数 学过C语言的人应该都用过printf这个库函数,它的声明如下: extern int printf(const char *format,…); …
-
Modern cpp之完美转发
转发的问题 在模板编程中,常有一种场景是把模板参数转发给另一个函数调用,这时候如果只提供值传递版本会显得效率太低。看一下代码 template<class TYPE,…
-
Modern cpp之std::enable_if和SFINAE
名词解释SFINAE SFINAE是英文Substitution failure is not an error的缩写,意思是匹配失败不是错误。这句话什么意思呢?当调用模板…
-
C++11新特性–右值引用与移动语义
引子-深拷贝和浅拷贝 在cpp11之前,我们定义一个类如果类中有指针成员,并且其指向一块堆内存,那么往往本类要负责这个指针指向内存的分配和销毁,不然会产生令人讨厌的内存泄露…
-
auto、decltype、decltype(auto)
1、auto 让编译器通过初始值来进行类型推演 所以说 auto 定义的变量必须有初始值 使用过程 //普通;类型 int a = 1, b = 3; auto c = a + b…
-
Faiss 向量库编译安装
Faiss 是 Facebook 开源的一套高效相似性搜索以及向量聚类的开发库,支持各类相似性搜索的算法,Faiss 项目本身是使用 C++ 编写的,但是提供 Python 的绑定…
-
47.多态
1.多态基本概念 多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征。 多态性(polymorphism)提供接口与具体实现之间的另一层隔离,从而将”what”…
-
stl之分配器allocators
先谈operator new()和malloc() c++分配内存动作最终都会跑到malloc上,所以operator new里也是调用malloc那malloc分配内存什么样子呢…