array

c++11封装固定大小数组的容器。不同于vector,不能自动扩展。头文件 <array>
定义:

template<class T,
        std::size_t N
> class array;

参数解释:
1. T 元素类型
2. N 元素个数

常用函数

operator()

reference operator[](size_type pos);
const_reference operator[](size_type pos) const;

返回位于指定位置pos的元素的引用。不进行边界检查。

at()

reference at(size_type pos);
const_reference at(size_t pos) const;

返回位于指定位置pos的元素的引用。有边界检查。如果pos不在容器范围内,则抛出std::out_of_range类型的异常。

front()

reference front();
const_reference front() const;

返回容器的第一个元素的引用。在空容器上行为未定义。

back()

reference back();
const_reference back() const;

返回容器的最后一个元素的引用。在空容器上行为未定义。

data()

T* data() noexcept; //c++17
constexpr T* data() noexcept; //c++17
const T* data() const noexcept;
constexpr const T* data() const noexcept;

返回指向元素存储的底层数组的指针。指针满足范围[data(); data() + size())

empty()

constexpr bool empty() const noexcept;

检查容器是否为空

size()

size_type size() const noexcept;

返回容器可容纳的元素个数

fill()

void fill(const T& value);
constexpr void fill(const T& value); //c++20

将给定value赋值给所有元素

简单使用示例

#include <array>
#include <iostream>

int main(int argc, char** argv) {
    std::array<int, 3> arr = {1, 2, 3};
    for(size_t i = 0; i < arr.size(); ++i) {
        if(i) {
            std::cout << " ";
        }
        std::cout << arr[i];
    }
    std::cout << std::endl;

    try {
        arr.at(3) = 4;
    } catch (std::exception& e) {
        std::cout << "exception: " << e.what() << std::endl;
    }

    arr[3] = 4; //未定义行为,可能会core
    return 0;
}
打赏 赞(6)
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

发表评论

邮箱地址不会被公开。 必填项已用*标注