📅  最后修改于: 2023-12-03 14:59:51.471000             🧑  作者: Mango
在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()
函数用于遍历整个数组。