C++ STL容器之array

版权声明:本文为博主原创文章,博客地址:https://blog.csdn.net/qq_41855420,未经博主允许不得转载。 https://blog.csdn.net/qq_41855420/article/details/89764420

C++ 容器array:

定义于头文件 < array > template< class T, std::size_t N > struct array; 是封装固定大小数组的容器。
该结构体结合了 C 风格数组的性能、可访问性与容器的优点,比如可获取大小、支持赋值、随机访问迭代器等。

array 满足容器 (Container) 和可逆容器 (ReversibleContainer) 的要求,除了默认构造的 array 是非空的,以及进行交换的复杂度是线性,它满足相接容器 (ContiguousContainer) (C++17 起)的要求并部分满足顺序容器 (SequenceContainer) 的要求。

当其长度为零时 array ( N == 0 )有特殊情况。此时, array.begin() == array.end() ,并拥有某个唯一值。在零长 array 上调用 front() 或 back() 是未定义的。

成员类型

成员类型 定义
value_type T
size_type std::size_t
difference_type std::ptrdiff_t
reference value_type&
const_reference const value_type&
pointer value_type*
const_pointer const value_type*
iterator 随机(任意)访问迭代器
const_iterator 常随机(任意)访问迭代器
reverse_iterator std::reverse_iterator
const_reverse_iterator std::reverse_iterator<const_iterator>

成员函数

隐式定义的成员函数

(构造函数)(隐式声明) 遵循聚合初始化的规则初始化 array (注意默认初始化可以导致非类的 T 的不确定值)(公开成员函数)
(析构函数)(隐式声明) 销毁 array 的每个元素 (公开成员函数)
operator= (隐式声明) 以来自另一 array 的每个元素重写 array 的对应元素 (公开成员函数)

元素访问

at 访问指定的元素,同时进行越界检查 (公开成员函数)
operator[] 访问指定的元素 (公开成员函数)
front 访问第一个元素 (公开成员函数)
back 访问最后一个元素 (公开成员函数)
data 返回指向内存中数组第一个元素的指针 (公开成员函数)

迭代器

begin、cbegin 返回指向容器第一个元素的迭代器 (公开成员函数)
end、cend 返回指向容器尾端的迭代器 (公开成员函数)
rbegin、crbegin 返回指向容器最后元素的逆向迭代器 (公开成员函数)
rend、crend 返回指向前端的逆向迭代器 (公开成员函数)

容量

empty 检查容器是否为空 (公开成员函数)
size 返回容纳的元素数 (公开成员函数)
max_size 返回可容纳的最大元素数 (公开成员函数)

示例

#include <array>
#include <string>
#include <iterator>
#include <iostream>
#include <algorithm>
 
int main(){
    // 用聚合初始化构造
    std::array<int, 3> a1{1, 2, 3};
    std::array<int, 3> a2 = {1, 2, 3};
    std::array<std::string, 2> a3 = { "a", "b" };
    // 支持容器操作
    std::sort(a1.begin(), a1.end());
    std::reverse_copy(a2.begin(), a2.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
    // 支持带范围 for 循环
    for(const auto& s: a3){
    	std::cout << s << ' ';
    }
    return 0;
}

输出:

3 2 1 
a b

猜你喜欢

转载自blog.csdn.net/qq_41855420/article/details/89764420