📜  如何将未知大小的 std::array 传递给函数 C++ (1)

📅  最后修改于: 2023-12-03 15:24:45.553000             🧑  作者: Mango

如何将未知大小的 std::array 传递给函数 C++

std::array 是 C++11 标准库中的一个容器,它提供了固定大小的数组,而且与普通数组相比,拥有更好的类型安全和迭代器支持。然而,当我们需要传递未知大小的 std::array 给函数时,就需要使用模板来解决这个问题。

声明模板

我们可以使用模板来声明一个函数可以接收任意大小的 std::array。下面是一个例子,使用模板定义一个函数 print_array,该函数接受一个类型为 T 和大小为 nstd::array,并将其打印到控制台上。

#include <iostream>
#include <array>

template <typename T, std::size_t n>
void print_array(const std::array<T, n>& arr)
{
    for (const auto& e : arr)
    {
        std::cout << e << " ";
    }
    std::cout << std::endl;
}
传递 std::array

使用上面定义的 print_array 函数,我们可以传递任意大小的 std::array

int main()
{
    std::array<int, 4> arr1{1, 2, 3, 4};
    std::array<double, 3> arr2{1.0, 2.0, 3.0};

    print_array(arr1); // 打印 1 2 3 4
    print_array(arr2); // 打印 1 2 3

    return 0;
}
总结

通过在函数声明中使用类型模板参数和一个大小模板参数,我们可以将一个未知大小的 std::array 传递给函数。这样,我们就可以使用标准 C++ 的模板机制来消除代码中的冗余并提高代码的可重用性。