STEMHA's Blog

STL排序相关库

sort

函数声明

1
2
3
4
5
template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last);

template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

音标发音

清辅音与浊辅音

单例模式C++实现

单例模式

singleton pattern
purpose:使得一个类只能有一个实例,并提供一个全局访问的位置
probliem:遇到实例的频繁创建和销毁时,效率低
solution:创建时候检测实例是否存在
key code:构造函数是私有的

C++变量初始化

声明只是表明了变量的数据类型和属性,并不分配内存;定义则是需要分配内存的。

C++运算符重载

运算符重载

重载的运算符带有特殊名称的函数

  • 函数名是由关键字 operator 和其后要重载的运算符符号构成的。
  • 与其他函数一样,重载运算符有一个返回类型和一个参数列表

大多数的重载运算符可被定义为普通的非成员函数或者被定义为类成员函数。

list常用操作

基本概念

list

  • 底层数据结构为双向链表,支持快速增删
  • 缺点是无法通过位置来直接访问序列中的元素,也就是说,不能索引元素。为了访问 list 内部的一个元素,必须一个一个地遍历元素,通常从第一个元素或最后一个元素开始遍历。
  • 节点对象维护了两个指针,一个指向前一个节点,另一个指向下一个节点。
  • 第一个元素的前向指针总是为 null,因为它前面没有元素,尾部元素的后向指针也总为 null。

map常用操作

基本概念

map

  • map不能直接修改关键字,只能通过修改关键字的值间接修改关键字。
  • 底层数据结构为红黑树,有序,不重复
  • map<K,T> 类模板定义在 map 文件头中,它定义了一个保存 T 类型对象的 map,每个 T 类型的对象都有一个关联的 K 类型的键。容器内对象的位置是通过比较键决定的。

pair常用操作

基本概念

pair

  • pair 是一个比较简单的模板类型,它只有两个 public 数据成员 first 和 second。
  • pair 对象可以封装任意类型的对象,可以生成任何想生成的 pair<T1,T2> 对象,可以是数组对象或者包含 pair<T1,T2> 的 vector 容器。例如,pair 可以封装两个序列容器或两个序列容器的指针。pair<T1,T2> 模板定义在 utility 头文件中,如果不想使用 map 而只想使用 pair 对象,可以包含这个头文件。

头文件

1
2
3
# include<utility>
或者
# include<map>

set常用操作

基本概念

set是一个关联容器类型,用于以升序方式存储唯一值。

  • 属于关联容器(关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。)

priority_queue常用操作

概念

priority_queue容器适配器定义了一个元素有序排列的队列。

  • 默认队列头部的元素优先级最高。
    • 因为它是一个队列,所以只能访问第一个元素,这也意味着优先级最高的元素总是第一个被处理。
  • 如何定义“优先级”完全取决于我们自己。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×