将未知大小的std :: array传递给函数

阿德里安

在C ++ 11中,我将如何编写采用已知类型但未知大小的std :: array的函数(或方法)?

// made up example
void mulArray(std::array<int, ?>& arr, const int multiplier) {
    for(auto& e : arr) {
        e *= multiplier;
    }
}

// lets imagine these being full of numbers
std::array<int, 17> arr1;
std::array<int, 6>  arr2;
std::array<int, 95> arr3;

mulArray(arr1, 3);
mulArray(arr2, 5);
mulArray(arr3, 2);

在搜索过程中,我只发现了使用模板的建议,但是这些建议看起来很杂乱(标题中的方法定义),对于我要完成的工作来说太过分了。

有没有一种简单的方法可以像使用普通C样式数组那样进行这项工作?

安迪(Andy Prowl)

有没有一种简单的方法可以像使用普通C样式数组那样进行这项工作?

否。除非您将函数设为函数模板(或使用其他类型的容器,如std::vector问题注释中建议的),否则您实际上无法做到这一点

template<std::size_t SIZE>
void mulArray(std::array<int, SIZE>& arr, const int multiplier) {
    for(auto& e : arr) {
        e *= multiplier;
    }
}

这是一个生动的例子

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章