C++容器是一种可以保存其他数据类型指针的对象类型,其空间可扩展性也使得其相对于数据来说具有很大的优势。
本文对C++容器的使用进行了总结说明
Reference:C++
array
简介
std::array是一种定长的序列容器,其中元素遵循严格的线性排序。与其他容器不同,array是固定大小的封装类型,所以不能进行扩展或者缩小,同时,交换两个array的行为是一种线性的操作,相对来说是十分低效的。
所以array具有如下三个特点:序列化(内部元素严格线性存储,需要按照位置访问)、连续存储(array的内存空间是连续分配的,可以使用指针偏移访问相应的元素)、大小固定(array使用隐式构造函数与析构函数进行控件的静态分配,其大小是编译时确定的常量,没有内存和时间上的开销)
声明方法
1 | std::array<int, size> arrayname; |
遍历方法
1 | for ( value_type& x : myarray) |
成员函数
功能 | 方法 | 用法 | 类型 | 备注 |
---|---|---|---|---|
iterator | begin | 获取顺序iterator第一个元素 | public | |
end | 获取顺序iterator最后一个元素 | public | ||
rbegin | 获取倒序iterator第一个元素 | public | ||
rend | 获取倒序iterator最后一个元素 | public | ||
cbegin | 同begin | public | const类型,可以访问不可修改 | |
cend | 同end | public | const类型,可以访问不可修改 | |
crbegin | 同rbegin | public | const类型,可以访问不可修改 | |
crend | 同rend | public | const类型,可以访问不可修改 | |
capacity | size | 返回容量 | public | sizeof为容量*类型长度 |
max_size | 和size一样 | public | ||
empty | 容量是否为0 | bool | ||
element access | operator[] | 返回指定位置的元素 | public | (1)可以直接访问,也可以对返回的元素进行修改 (2)超出返回out-of -range异常 |
at (pos ) | 返回指定位置的元素 | public | (1)可以直接访问,也可以对返回的元素进行修改 (2)超出返回out-of -range异常 |
|
front ( ) | 返回第一个元素 | public | (1)与begin不同,返回直接引用; (2)如果对空容器使用该方法,会产生undefined异常 (3)可以对返回的对象进行修改 |
|
back ( ) | 返回最后一个元素 | public | (1)与end不同,返回直接引用; (2)如果对空容器使用该方法,会产生undefined异常 (3)可以对返回的对象进行修改 |
|
data() | 返回对象头部指针 | public | ||
modifiers | fill(value_type& val) | array中全部元素设为val | public | fill_n (OutputIterator first, Size n, const T& val) |
array1.swap(array2) | 交换两个array | public | (1)两个array大小和类型相同 (2)swap是一种线性的操作 |
|
non-member function overloads | get |
访问pos位置的值 | public | (1)是对元组get方法的重载 (2)不会抛出异常 |
relational operators(array) | 比较操作 | bool | (1)比相等时,要内容和容量完全相同 (2)比大小时,元素内容依次比较,如果出现不同直接返回大小(类似字典序) |
|
non-menber class | tuple_element |
public | 静态元组形式访问元素 | |
tuple_size |
public | 静态元组形式访问大小 |
<–持续更新中–>