链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
容器
容器用于存储数据元素,是由长度可变的同类型的元素构建成的序列。
Vector:用于快速定位任意元素及主要在元素序列的尾部增加/删除元素的场合,在头文件中定义,用动态数组实现。
basic_string<元素类型>:与vector相似,不同之处在于其元素类型是字符类型,提供与字符串相关的操作。string和wstring是它的两个实例basic_string和basic_string。
set<元素类型>和multiset<元素类型>:在set头文件中定义,set可以用于去重。
map<关键字类型,值类型> 和multimap<关键字类型,值类型>:元素按关键字排序,multimap中不同元素的关键字可以相同,在map头文件中定义,常常用某种二叉树实现。
list<元素类型>:用于经常在元素序列中任意位置上插入/删除元素的场合。在list头文件中定义,用双向链表实现。
stack<元素类型>:用于仅在元素序列的尾部增加/删除元素的场合,在stack头文件中定义,一般基于deque来实现。
deque<元素类型>:用于主要在元素序列的两端增加/删除元素以及需要快速定位(访问)任意位置上的元素的场合。在deque头文件定义,用分段的连续空间结构实现。
queue<元素类型>:用于仅在元素序列的尾部增加,头部删除元素的场合。在queue头文件中定义,一般基于deque来实现。
-
迭代器
迭代器实现了抽象的指针(智能指针),它们指向容器中的元素,用于对容器中的元素进行访问和遍历。
输入迭代器:用于读取所指向的容器元素。
输出迭代器:用于修改所指向的容器元素。
前向迭代器:用于读取和修改所指向的容器元素。
双向迭代器:用于读取和修改所指向的容器元素。
随机访问迭代器:用于读取和修改所指向的容器元素。
-
算法
调序算法:改变容器中元素的次序。
集合算法:用于实现集合的运算。
查找算法:用于在容器中查找元素或子元素序列。
堆算法:用于实现按对结构存储和操作容器中的元素,具有堆结构的容器的主要特点之一是:第一个元素总是最大的。
编辑算法:用于实现对容器元素的复制、替换、删除、交换、合并、赋值等操作。、
元素遍历并操作算法:依次访问一个范围内的每个元素,并对每个元素调用某个指定的操作函数或函数对象f。
算术算法:用于对容器内的元素进行求和、内积和、差等。
模板
- 类属性
类属类:一个类的成员类型可变。
类属性: 一个程序实体能对多种类型的数据进行操作或描述的特性。
类属函数:一个函数能对不同类型的数据(参数)完成相同的操作。
- 指针类型参数
将参数类型定义为void *,因为void *可以接受任何指针类型。
-
函数模板
动态语言中在定义参数是不用指定类型,所以本身就具有类属性。
C++时一种静态类型语言,可以通过宏定义、指针类型参数、函数模板等方式实现类属性。
-
函数模板
定义
template <class T1, class T2, …>
<返回值类型> <函数名> (<参数表>)
{…}
-
类模板
template <class T1, class T2, …>
class <类名>
{<类成员声明>
};
在类外部定义的成员函数
template <class T1, class T2, …>
<返回值类型> <类名> <T1, T2, …>::<成员函数名>(<参数表>){…}