C++_Containers

C++容器是一种可以保存其他数据类型指针的对象类型,其空间可扩展性也使得其相对于数据来说具有很大的优势。

本文对C++容器的使用进行了总结说明

Reference:C++

array

简介

std::array是一种定长的序列容器,其中元素遵循严格的线性排序。与其他容器不同,array是固定大小的封装类型,所以不能进行扩展或者缩小,同时,交换两个array的行为是一种线性的操作,相对来说是十分低效的。

所以array具有如下三个特点:序列化(内部元素严格线性存储,需要按照位置访问)、连续存储(array的内存空间是连续分配的,可以使用指针偏移访问相应的元素)、大小固定(array使用隐式构造函数与析构函数进行控件的静态分配,其大小是编译时确定的常量,没有内存和时间上的开销)

声明方法

1
2
std::array<int, size> arrayname;
std::array<int,5> first = {10, 20, 30, 40, 50};

遍历方法

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(array) 访问pos位置的值 public (1)是对元组get方法的重载
(2)不会抛出异常
relational operators(array) 比较操作 bool (1)比相等时,要内容和容量完全相同
(2)比大小时,元素内容依次比较,如果出现不同直接返回大小(类似字典序)
non-menber class tuple_element public 静态元组形式访问元素
tuple_size public 静态元组形式访问大小

<–持续更新中–>

0%