📅  最后修改于: 2023-12-03 15:24:45.553000             🧑  作者: Mango
std::array
传递给函数 C++std::array
是 C++11 标准库中的一个容器,它提供了固定大小的数组,而且与普通数组相比,拥有更好的类型安全和迭代器支持。然而,当我们需要传递未知大小的 std::array
给函数时,就需要使用模板来解决这个问题。
我们可以使用模板来声明一个函数可以接收任意大小的 std::array
。下面是一个例子,使用模板定义一个函数 print_array
,该函数接受一个类型为 T
和大小为 n
的 std::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++ 的模板机制来消除代码中的冗余并提高代码的可重用性。