C++11标准库(STL)使用总结——array

本文详细介绍了C++11标准库中的array容器,包括其固定大小、不使用分配器管理元素、不可动态扩展的特点,以及begin、end、rbegin、rend等操作方法的用法和示例。此外,还提到了array可以作为元组对象处理,提供get函数访问元素,并讨论了与其他容器不同的交换操作特性。
摘要由CSDN通过智能技术生成

array是固定大小的顺序容器,它们保存了一个以严格的线性顺序排列的特定数量的元素。

在内部,一个数组除了它所包含的元素(甚至不是它的大小,它是一个模板参数,在编译时是固定的)以外不保存任何数据。存储大小与用语言括号语法([])声明的普通数组一样高效。这个类只是增加了一层成员函数和全局函数,所以数组可以作为标准容器使用。

与其他标准容器不同,数组具有固定的大小,并且不通过分配器管理其元素的分配:它们是封装固定大小数组元素的聚合类型。因此,他们不能动态地扩大或缩小。

零大小的数组是有效的,但是它们不应该被解除引用(成员的前面,后面和数据)。

与标准库中的其他容器不同,交换两个数组容器是一种线性操作,它涉及单独交换范围内的所有元素,这通常是相当低效的操作。另一方面,这允许迭代器在两个容器中的元素保持其原始容器关联。

数组容器的另一个独特特性是它们可以被当作元组对象来处理:array头部重载get函数来访问数组元素,就像它是一个元组,以及专门的tuple_size和tuple_element类型。

template < class T, size_t N > class array;

方法 含义
begin 返回指向数组容器中第一个元素的迭代器
end 返回指向数组容器中最后一个元素之后的理论元素的迭代器
rbegin 返回指向数组容器中最后一个元素的反向迭代器
rend 返回一个反向迭代器,指向数组中第一个元素之前的理论元素
cbegin 返回指向数组容器中第一个元素的常量迭代器(const_iterator)
cend 返回指向数组容器中最后一个元素之后的理论元素的常量迭代器(const_iterator)
crbegin 返回指向数组容器中最后一个元素的常量反向迭代器(const_reverse_iterator)
crend 返回指向数组中第一个元素之前的理论元素的常量反向迭代器(const_reverse_iterator)
size 返回数组容器中元素的数量
max_size 返回数组容器可容纳的最大元素数
empty 返回一个布尔值,指示数组容器是否为空
operator[] 返回容器中第 n(参数)个位置的元素的引用
at 返回容器中第 n(参数)个位置的元素的引用
front 返回对容器中第一个元素的引用
back 返回对容器中最后一个元素的引用
data 返回指向容器中第一个元素的指针
fill 用 val(参数)填充数组所有元素
swap 通过 x(参数)的内容交换数组的内容
get(array) 形如 std::get<0>(myarray);传入一个数组容器,返回指定位置元素的引用
relational operators (array) 形如 arrayA > arrayB;依此比较数组每个元素的大小关系
1. array::begin

返回指向数组容器中第一个元素的迭代器。

      iterator begin() noexcept;
const_iterator begin() const noexcept;

Example

#include <iostream>
#include <array>
int main()
{
   
    std::array<int, 5> myarray = {
   2, 16, 77,34, 50};
    std::cout << "myarray contains:";
    for(auto it = myarray.begin(); it != myarray.end(); ++i)
        std::cout << ' ' << *it;
    std::cout << '\n';
    return 0;
}

Output

myarray contains: 2 16 77 34 50
2. array::end

返回指向数组容器中最后一个元素之后的理论元素的迭代器。

      iterator end() noexcept;
const_iterator end() const noexcept;

Example

#include <iostream>
#include <array>
int main ()
{
   
    std::array<int,5> myarray = {
    5, 19, 77, 34, 99 };
    std::cout << "myarray contains:";
    for ( auto it = myarray.begin(); it != myarray.end(); ++it )
        std::cout << ' ' << *it;
    std::cout << '\n';
    return 0;
}

Output

myarray contains: 5 19 77 34 99
3. array::rbegin

返回指向数组容器中最后一个元素的反向迭代器。

      reverse_iterator rbegin()noexcept;
const_reverse_iterator rbegin()const noexcept;

Example

#include <iostream>
#include <array>
int main ()
{
   
    std::array<int,4> myarray = {
   4, 26, 80, 14} ;
    for(auto rit = myarray.rbegin(); rit < myarray.rend(); ++rit)
        std::cout << ' ' << *rit; 
    std::cout << '\n';
    return 0;
}

Output

myarray contains: 14 80 26 4
4. array::rend

返回一个反向迭代器,指向数组中第一个元素之前的理论元素(这被认为是它的反向结束)。

      reverse_iterator rend() noexcept;
const_reverse_iterator rend() const noexcept;

Example

#include <iostream>
#include <array>
int main ()
{
   
    std::array<int,4> myarray = {
   4, 26, 80, 14};
    std::cout << "myarray contains";
    for(auto rit = myarray.rbegin(); rit < myarray.rend(); ++rit)
        std::cout << ' ' << *rit;
    std::cout << '\n';
    return 0;
}

Output

myarray contains: 14 80 26 4
5. array::cbegin

返回指向数组容器中第一个元素的常量迭代器(const_iterator);这个迭代器可以增加和减少,但是不能用来修改它指向的内容。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值