📜  C++中的数组类(1)

📅  最后修改于: 2023-12-03 14:59:51.471000             🧑  作者: Mango

C++中的数组类介绍

在C++中,数组是一组相同数据类型的元素构成的集合。C++ 也提供了一个数组类,即 std::array, 提供了方便的数组数据结构。 std::array是一个容器,与内置数组不同的是,它提供了一些有用的函数。

定义存储不同类型数据的数组

使用std::array可以定义存储不同类型数据的数组,只需要在定义时指定数据类型即可。例如定义一个存储整型数据的数组。

#include <array>
 
std::array<int, 5> arr = {1, 2, 3, 4, 5};

std::array是一个模板,第一个参数指定数组的数据类型,第二个参数则是数组的大小 。上面代码就定义了一个大小为5,存储整型变量的数组。

访问数组成员

std::array支持使用下标符号( [] )访问数组成员。使用下标符号访问数组时,需要指定下标,下标从0开始计数。

std::cout << arr[0] << std::endl; // 输出1
std::cout << arr[4] << std::endl; // 输出5
获取数组首尾元素

std::array提供了函数 std::array::front()std::array::back() 用于访问数组的首尾元素。

std::cout << arr.front() << std::endl; // 输出1
std::cout << arr.back() << std::endl; // 输出5
获取数组长度

std::array提供了一个成员变量 std::array::size(),用于获取数组的长度。

std::cout << arr.size() << std::endl; // 输出5
遍历数组

std::array提供了 std::begin()std::end() 函数用于遍历数组。使用这两个函数可以遍历整个数组,或者只遍历部分数组。

for (auto it = std::begin(arr); it != std::end(arr); ++it) 
{
    std::cout << *it << " ";
}
std::cout << std::endl; // 输出1 2 3 4 5
数组容器的一些操作

std::array同样支持容器的一些操作,如std::array::fill()std::array::swap() 等。使用这些操作可以实现数组的排序、查找等操作。

std::array<int, 5> arr2;
arr2.fill(0); // 将整个数组置为0
 
arr.swap(arr2); // 将arr和arr2互换

std::array不仅可以用于存储基本类型的数据,还可以存放结构体或其它自定义类型的数据。

简单示例

下面我们将使用std::array实现一个简单的数组容器,能够实现添加元素、遍历数组等操作。

#include <iostream>
#include <array>
 
template<typename T, int N>
class MyArray
{
private:
    std::array<T, N> arr;
    int size;
 
public:
    MyArray() : size(0) {}
 
    void add(T value)
    {
        if (size < N)
        {
            arr[size++] = value;
        }
    }
 
    void traverse() const
    {
        for (int i = 0; i < size; ++i)
        {
            std::cout << arr[i] << " ";
        }
        std::cout << std::endl;
    }
};
 
int main()
{
    MyArray<int, 5> myArr;
 
    myArr.add(1);
    myArr.add(2);
    myArr.add(3);
 
    myArr.traverse(); // 输出1 2 3
 
    return 0;
}

上面代码中,我们定义了一个模板类 MyArray,它是一个动态数组容器,可以根据需要添加元素,同时 traverse() 函数用于遍历整个数组。