C++: Collections
Intro集合提供了一种存储数据的方法。C++ 标准库(STL)提供了许多不同种类的集合,因此了解何时使用哪些集合是非常要的。这篇文章里将讨论 C++ 中常用的集合。
Big-O 表示法Big-O 表示法用于描述一个算法的运行时间和占用空间随着问题规模的扩展而相应扩展的速率,这个速率分别被称为时间复杂度和空间复杂度。
接下来我们主要讨论时间复杂度,空间复杂度与它的情况类似。
下表列出了最常见的从最快到最慢的时间复杂度。具有指数或更慢的时间复杂度的算法太慢,一般不会使用。
Big-O
描述方法
应用实例
O(1)
Constant 常量
在链表前端插入元素,查找数组内的某个元素
O(\log n)
Logarithmic 对数
二分查找
O(\sqrt{n})
Square Root 平方根
O(n)
Linear 线性
线性查找
O(n \log n)
Linear Logarithmic 线性对数
归并排序,堆排序
O(n^2)
Quadratic 二次方
插入排序,冒泡排序,选择排序
O(n^3)
Cubic 三次方
O(2^n)
E ...
未读
To-do List
ChatGPT Prompt Engineering for Developers
Computer Network: Physical Layer
Prototyping
Note on Markdown
Note on SQL
C++: Concepts for OOP
IntroC++ 通过类来实现面向对象的编程。本文将介绍一些在 C++ 中使用类的时候可能会引起一些问题的主题。
引用、const 和类通过按值传递把对象传递给函数的效率很低。因为复制对象的操作可能需要高昂的计算代价,特别是当对象拥有大量的数据的时候。因此,在 C++ 中,最佳的实践方法是通过引用传递对象。
但是,按引用传递对象带来的一个问题是,引用允许函数修改类的参数。假设有一个用来检测两个圆是否相交的函数 Intersects,它接收两个 Circle 对象作为参数。如果 Intersects 函数通过引用来接收这两个 Circle 对象,它就可以修改这两个 Circle 对象的中心或半径。
在 C++ 中,对这个问题的解决方案是使用常量引用(const 引用)。const 引用 保证函数只能对引用变量进行读取操作,而不能进行写入操作。使用 const 引用的 Intersects 函数的声明如下:
1bool Intersects(const Circle& a, const Circle& b);
还可以把成员函数标记为 const 成员函数,以保证成员函数不会 ...
Note on Hugging Face
IntroThis article introduces Hugging Face and the Transformers library, which is the most popular NLP library in Python, it provides states of various models and a clean API that makes it super simple to build NLP piplines even for beginners.
This articles concerns how to use the pipeline, model and tokenizer, how to combine it with Pytorch or TensorFlow, how to save and load models, how to use models from the official model hub, and how to finetune your own models.
InstallationFirst of all, we ...
C++: Reference, Pointer and Array
Intro尽管引用、指针和数组看起来像是单独的概念,但它们是密切相关的,因此本文将把它们放到一起去讨论它们的相似与区别。
引用引用是一个用来关联一个已经存在的变量的变量。我们通过在变量类型后面添加 & 来把一个变量表示为引用。
默认情况下,函数按值传递参数(按值传递),这意味着在代码中调用函数的时候,是把参数的值复制到新的变量当中。这导致在函数中对参数的修改不会体现在原参数中。
例如,下面的代码是一个交换两个整数的值的 Swap 函数的错误实现:
123456void Swap(int a, int b){ int temp = a; a = b; b = temp;}
这个函数的问题是,变量 a 和变量 b 与原参数无关,它们是独立的新创建出来的变量,只是创建时复制了原参数的值,因此交换 a 和 b 的值不会对原参数产生任何影响。要解决这个问题,就需要把函数的参数声明为引用,如下所示:
123456void Swap(int& a, int& b){ int temp = a; a = b; b = tem ...